How to crop only selected part of an image automatically?
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Akib Rahman
el 21 de Jun. de 2018
Editada: Jyoti Verma
el 11 de Nov. de 2019
I have some image, from this image I need to identify only some portion that's mean segmentation. After identification, I need to crop this portion automatically. I found some code for automatically cropping but don't work exactly what I want! In my dataset images are different and for that reasons, segmented images also different. For example, a pre-processed image is first one and I need to detect the image in that way, an example is the second one.
Now I want to crop the right image automatically only segmented area.
In my code, it cropped incorrectly different region :(.
In my dataset images is different one from another!
My code is given below:
close all;
I=imread('CL_2_2.jpg');
figure, imshow(I);
I=rgb2gray(I);
BW=I>100;
figure,imshow(BW);
labeledImage = bwlabel(BW);
measurements = regionprops(labeledImage, 'BoundingBox', 'Area');
for k = 1 : length(measurements)
thisBB = measurements(k).BoundingBox;
I2=imcrop(I,[thisBB(1),thisBB(2),thisBB(3),thisBB(4)]);
[rows cols depth]=size(I2);
if rows*cols>200
I2=imresize(I2,[28 28]);
figure,imshow(I2);
end
end
0 comentarios
Respuesta aceptada
Majid Farzaneh
el 21 de Jun. de 2018
Hi It works. But you have used imresize and have changed the segments. Also your threshold for segments sizes (200) may be large. For showing smaller objects you should take it smaller. I tried this and it worked:
close all;
I=imread('CL_2_2.jpg');
figure, imshow(I);
I=rgb2gray(I);
BW=I>100;
figure,imshow(BW);
labeledImage = bwlabel(BW);
measurements = regionprops(labeledImage, 'BoundingBox', 'Area');
for k = 1 : length(measurements)
thisBB = measurements(k).BoundingBox;
I2=imcrop(I,[thisBB(1),thisBB(2),thisBB(3),thisBB(4)]);
[rows cols depth]=size(I2);
if rows*cols>100
%%%%%%%I2=imresize(I2,[28 28]);
figure,imshow(I2);
end
end
2 comentarios
Majid Farzaneh
el 21 de Jun. de 2018
You're welcome. Your algorithm is not clever enough to recognize difference between ROI and the numbers. You can try some other threshold (e.g. 150) or develop your code to understand the numbers. For saving figures check this .
Más respuestas (1)
Jyoti Verma
el 11 de Nov. de 2019
Editada: Jyoti Verma
el 11 de Nov. de 2019
Croping an Image,
%Read and Display an Image,
I=imread('rec.jpg');
%rgb conversion,
J=rgb2gray(I);
subplot(221);imshow(I);title('RGB image Figure')
% Crop Image Using Crop Image Interactive Tool
[K, rect] = imcrop(J);
subplot(222);imshow(J);title('Gray image Figure')
% cropped image in matlab
I2 = imcrop(J,[12.5 8.5 411 99]);
subplot(223);imshow(I2);title('Cropped image Figure')
% BINARY CONVERSION
I3=im2bw(I2);
subplot(224);imshow(I3);title('Binary image Figure')
0 comentarios
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!