How to remove image margins

6 views (last 30 days)
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?

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) = [];
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

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,:) ;
KSSV on 30 Mar 2021
Edited: KSSV on 30 Mar 2021
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,:) ;

Categories

Find more on Image Arithmetic in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!