How to remove image margins

6 views (last 30 days)
lech king
lech king on 30 Mar 2021
Edited: Esen Ozbay on 31 Mar 2021
After extracting the required parts from a CT scan, I also intend to remove the extra margins of the image (black parts around the lungs)
I understand that I can add the contents of rows or columns one by one with command for and delete the first non-zero row or column, but it seems that using command for has a high computational load. Do you have any other suggestion to solve this problem?

Accepted Answer

Esen Ozbay
Esen Ozbay on 30 Mar 2021
Edited: Esen Ozbay on 30 Mar 2021
Let your array be called CTscan, and be a 1024x1024 matrix.
If you know how many columns you want to delete (let's say 21), you can do this to delete the first 21 columns:
CTscan(:, 1:21) = [];
Then, you will have a 1024x1003 matrix.
You can also do the same for rows. To delete the first 23 rows of CTscan:
CTscan(1:23, :) = [];
Then, you will have a 1001x1003 matrix.
To delete the last 21 columns:
CTscan(:, end-20:end) = [];
  3 Comments
lech king
lech king on 31 Mar 2021
It was really great
Thank you very much for your kindness
This is exactly what I was looking for

Sign in to comment.

More Answers (1)

KSSV
KSSV on 30 Mar 2021
Let I be your image and say you want to extract image from row0 to row1 and col0 to col1..
I_extract = I(row0:row1,col0:col1,:) ;
  2 Comments
KSSV
KSSV on 30 Mar 2021
Edited: KSSV on 30 Mar 2021
I = imread('image.jpeg') ;
I1 = rgb2gray(I) ;
[y,x] = find(I1==0) ;
x0 = min(x) ; x1 = max(x) ;
y0 = min(y) ; y1 = max(y) ;
I = I(y0:y1,x0:x1,:) ;

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!