crop a region of interest on images and create new files only with this region

8 visualizaciones (últimos 30 días)
Dear all,
I am writing to you because I am new to Matlab and I would be very grateful if you could help me. I have images from 20 sections from t=0 to t=70 (which would make for 1420 images, beginning with z0000_t0000, z0001_t0000... leading up to z00019_t0069, size of the field 200x200, pixels 521x512), that I normally put into Z-stack and analyse over time with ImageJ. However, I would like to have a Matlab program that would extract only one region of the image (that I would choose, either draw manually or by establishing coordinates, but I have no idea how establish the coordinates?) and create 1420 images (either new 1420 images, or transform the original image into images with the ROI) only with that region. Is it possible, and could you please help me do it? Thank you very much.

Respuesta aceptada

MHN
MHN el 9 de Mzo. de 2016
Editada: MHN el 9 de Mzo. de 2016
Im = imread('ngc6543a.jpg'); %load your image
image(Im)
x_start = 50; % start x
x_end = 500; % end x
y_start = 50; % start y
y_end = 500; % end x
Im1 = Im([x_start:x_end],[y_start:y_end],:);
figure
image(Im1)
imwrite(Im1,'newimage.jpg') % save the croped image
To find your coordinates, you can see the original picture (Im), use the "data cursor" and you can find your min\max x and min\max y.

Más respuestas (2)

Anastasia
Anastasia el 9 de Mzo. de 2016
Thank you very much for your response! Is it possible to create a while...to program (or something like that), so that I could put all the pictures from one folder (from z0000_t0000 to z0019_t0069, and not one by one? Thank you again!!
  3 comentarios
Image Analyst
Image Analyst el 12 de Mzo. de 2016
You have to process them one by one, but you can put the processing into a loop so that it's essentially a batch process. Code for this is in the FAQ: http://matlab.wikia.com/wiki/FAQ#How_can_I_process_a_sequence_of_files.3F
MHN
MHN el 12 de Mzo. de 2016
If I want to integrate the answers (Just save the following code in the same path as your image's files):
for i = 0 : 19;
for j = 0 : 69;
filename = ['z00' sprintf('%02d',i) '_t00' sprintf('%02d',j) '.jpg'];
Im = imread(filename);
x_start = 50; % start x
x_end = 500; % end x
y_start = 50; % start y
y_end = 500; % end x
Im_new = Im([x_start:x_end],[y_start:y_end],:);
imwrite(Im_new, filename) % replace the croped image
end
end

Iniciar sesión para comentar.


Anastasia
Anastasia el 3 de Abr. de 2016
Thank you so much, it works perfectly!!! Thank you!
  1 comentario
Image Analyst
Image Analyst el 3 de Abr. de 2016
Be very careful when using MHN's code because he made the common mistake of swapping x and y.
Images are arrays, and are indexed like arrays as (row, column), NOT (x,y) as he had. You will need to swap all of his x,y with y,x to get his code to work properly.

Iniciar sesión para comentar.

Categorías

Más información sobre Convert Image Type en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by