Longitudinal Cut View at Certain Angle
Show older comments
Hi
I'm a beginner in Image processing . I have a Multi frame Image with consist of 271 frames . i want to cut this image at certain angle (like 45 deg) to get its longitudinal view . I have the upper part of the image and want to get lower view . But i'm not able to get this . here i have attached the code . can anyone please help me in this
for frame=1:271
[mri(:,:,:,frame),map] = imread('image.tif',frame);
end
for slice = 1: 271
angle = 45;
xcentre = floor(size(Image, 2) / 2);
ycentre = floor(size(Image, 1) / 2);
xtop = xcentre + ycentre / tan(angle);
yright = ycentre - (size(Image, 2) - xcentre) * tan(angle);
xbottom = xcentre - (size(Image, 1) - ycentre) / tan(angle);
yleft = ycentre + xcentre * tan(angle);
if xtop < 0 || xtop > size(Image, 2)
x = [1, size(Image, 2)];
y = [yright, yleft];
else
x = [xbottom, xtop];
y = [size(Image, 1), 1];
end
% x = [1, size( mri(:,:,:,slice), 2)];
% y = [1, size( mri(:,:,:,slice), 1)];
[linex, liney, ~] = improfile(mri(:, :,:, slice), x, y);
sliceimage = mri(sub2ind(size(mri), ...
repmat(round(liney), 1, size(mri, 3)), ...
repmat(round(linex), 1, size(mri, 3)), ...
repmat(1:size(mri, 3), numel(linex), 1)));
if slice == 1
image3D = sliceimage;
else
image3D = cat(2, image3D, sliceimage);
end
end
image(image3D);
colormap(gray(256))
Answers (2)
Yuvaraj Venkataswamy
on 3 May 2018
0 votes
Check below link.
https://in.mathworks.com/matlabcentral/answers/210394-how-to-divide-an-image-diagonally-into-two-part
1 Comment
Arsalan Akbar
on 3 May 2018
Jun Tan
on 13 May 2018
0 votes
You can use "imrotate" on each slice then obtain the longitudinal cut view along the central axis without worrying about interpolation.
Categories
Find more on Image Arithmetic in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!