MATLAB Answers

How to crop images in Matlab based on Intensity Profiles?

17 views (last 30 days)
Warid Islam
Warid Islam on 1 Aug 2019
Commented: Warid Islam on 3 Aug 2019
I have an image in Matlab which I want to crop based on the intensity profile. Below is my image.
I want to crop out the blue portion of the image based on the intensity profile. For example, based on the intensity profile, I want to crop the part of the image where the intensity of blue is higher than the other colors. Below is my sample code and example.
hFig = figure ;
subplot(1, 2, 1 );
rgbImage = imread('Intensity1.jpg ');
imshow(rgbImage )
subplot(1, 2, 2 );
croppedImage = rgbImage(200 : 400 , :, :);
imshow(croppedImage);
In the image above, it can be seen that the blue portions still remain in the image which I don't want. Any help would be very much appreciated. Thank you.
  13 Comments
Warid Islam
Warid Islam on 3 Aug 2019
Hi Image Analyst,
Thank you for the suggestions. I would implement those in the final output.

Sign in to comment.

Accepted Answer

awezmm
awezmm on 3 Aug 2019
Try this where img is your original image:
% get red, green, blue channels
redC = img(:,:,1);
greenC = img(:,:,2);
blueC = img(:,:,3);
% mask where red channel is greater than blue channel and green channel greater than blue channel
mask = redC > blueC & greenC > blueC;
% overlay mask into original image
finalimg = bsxfun(@times, img, cast(mask,class(img)));
%plotting
figure
subplot(1,2,1)
imshow(img)
subplot(1,2,2)
imshow(finalimg)

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!