(*by Nasser M. Abbasi, Version: August 7, 2013 *) Manipulate[ Module[{work = Table[0, {116}, {150}, {3}], channel}, If[r1 > r2, r1 = r2]; If[c1 > c2, c1 = c2]; channel = Which[ p1 && p2 && p3, 1 ;; 3, p1 && Not[p2] && Not[p3], 1, p1 && p2 && Not[p3], 1 ;; 2, p1 && Not[p2] && p3, {1, 3}, Not[p1] && p2 && p3, 2 ;; 3, Not[p1] && p2 && Not[p3], 2, Not[p1] && p3 && Not[p2], 3, True, (p1 = True; 1)(*must have atleast one channel*) ]; work[[r1 ;; r2, c1 ;; c2, channel]] = data[[r1 ;; r2, c1 ;; c2, channel]]; Grid[{ {Row[{"ImageData[[ ", padIt2[r1, 3], ";;", padIt2[r2, 3], " , ", padIt2[c1, 3], ";;", padIt2[c2, 3], " , ", channel, " ]]"}]}, {Grid[{ {ImageResize[Image[data], 350], ImageResize[Image[work], 350]}}] } }, Alignment -> Center, Frame -> All, FrameStyle -> LightGray, Spacings -> {1, 1}] ], Style[Text[Grid[{ { Grid[{ {"starting row", Control[{{r1, 17, ""}, 1, 116, 1, ImageSize -> Tiny}], Spacer[2], Dynamic[padIt2[r1, 3]]}, {"ending row", Control[{{r2, 83, ""}, 1, 116, 1, ImageSize -> Tiny}], Spacer[2], Dynamic[padIt2[r2, 3]]}, {"starting column", Control[{{c1, 10, ""}, 1, 150, 1, ImageSize -> Tiny}], Spacer[2], Dynamic[padIt2[c1, 3]]}, {"ending column", Control[{{c2, 133, ""}, 1, 150, 1, ImageSize -> Tiny}], Spacer[2], Dynamic[padIt2[c2, 3]]} }, Alignment -> Left, Frame -> True, FrameStyle -> Directive[Thickness[.001], Gray]], Grid[{ {"select color channel"}, {Grid[{ {"red", Checkbox[Dynamic[p1, {p1 = #} &]]}, {"green", Checkbox[Dynamic[p2, {p2 = #} &]]}, {"blue", Checkbox[Dynamic[p3, {p3 = #} &]]} }, Alignment -> Left, Spacings -> {0.4, .7}] } }, Alignment -> Center, Frame -> True, FrameStyle -> Directive[Thickness[.001], Gray], Spacings -> {0.5, .7}] } }, Alignment -> Center] ], 12], {{p1, True}, None}, {{p2, True}, None}, {{p3, True}, None}, Alignment -> Center, ImageMargins -> 1, FrameMargins -> 1, Paneled -> True, AutorunSequencing -> Automatic, SynchronousUpdating -> True, ContinuousAction -> True, SynchronousInitialization -> False, SynchronousUpdating -> True, Initialization :> ( numeric = (Element[#, Reals] &); padIt2[v_?numeric, f_Integer] := AccountingForm[Chop[v] , f, NumberSigns -> {"", ""}, NumberPadding -> {"0", "0"}, SignPadding -> True]; data = ImageData[]; (*not included*) ) ]