This implements the rotation part. Still pondering which is the better way to implement the interface for multiple transformations:
perComponentTransform[img_Image] :=
Module[{mc, m, col, colRuls, centerRuls, maskDataRuls, mask},
mc = MorphologicalComponents[img];
m = Max@mc;
col = Colorize[mc, ColorFunction -> "Rainbow"];
colRuls = Union@Flatten[MapThread[Rule, {mc, ImageData@col}, 2], 1];
{centerRuls, maskDataRuls} =
Transpose[Thread /@ ComponentMeasurements[img, {"Centroid", "Mask"}]];
mask = maskDataRuls /. (n_ -> a_SparseArray) :>
ColorReplace[Image@a, White -> RGBColor @@ (n /. colRuls)];
DynamicModule[{maskd = mask, k = 0, angle = Array[0 &, m], angleResv = Array[0 &, m]},
Panel@Dynamic@
Column[{
Row[{Image[col, ImageSize -> 200],
Column[
Table[With[{i = j},
DynamicModule[{y = angleResv[[i]]},
Row@{
Graphics[{RGBColor @@ (i /. colRuls), Rectangle[]}, ImageSize -> 15],
Slider[Dynamic[y, (k = i; angle[[i]] = y = #) &], {0, 2 Pi}],
Dynamic[y]}]], {j, m}]]}],
If[! $ControlActiveSetting && k != 0,
maskd[[k]] = ImageTransformation[mask[[k]],
RotationTransform[-angle[[k]], k /. centerRuls],
DataRange -> Full];
angleResv = angle; k = 0];
Image[Fold[ImageAdd, maskd], ImageSize -> 400]}]]]
Usage:
img = Binarize@Import@"https://i.stack.imgur.com/4SYJS.png";
perComponentTransform[img]

Due credit to Algohi for solving a nasty problem with ControlActive for arrays of controls
perComponentTransformis a challenge for my computer.Due toImageForwardTransformationis a power-wasting function.I'm look forward to theMorphologicalTransformcan do those thransform in next version. – yode Mar 01 '16 at 08:59ImageTransformationnow instead ofImageForwardTransformation) – Dr. belisarius Mar 02 '16 at 15:34mask=ImageMultiply[col,Image[#]]&/@Values[ComponentMeasurements[col,"Mask"]];.2.ImageAdd[maskd]instead ofFold[ImageAdd, maskd].Anyway your method is best than what I have writed. – yode Mar 02 '16 at 15:39ImageCropthe every component.Then*Transformit.In the last.we move back to theCentroid.But I havenot try it.It will save many computer the pixel of0. – yode Mar 02 '16 at 15:42maskis calculated only once, so there is no much gain in it. Re suggestion 2:ImageAddaccepts only two args in V9. Re Suggestion 3: It can be done ... but how's the performance right now? – Dr. belisarius Mar 02 '16 at 16:08$ControlActiveSettingthen we cannot realize the effect like asContinuousAction -> True? – yode Mar 02 '16 at 16:26