2013-03-19 144 views
1

是否有人知道如何在matlab中裁剪图像,但裁剪图像的结果应该是正方形?所以,宽度和高度应该是相同的大小..谢谢..在matlab中裁剪正方形图像

im=dicomread('078tm.L.dcm'); 
A=double(im); 
B = A/max(A(:)); 
crop= imcrop(B); 
[w h]=size(crop); 
if w~=h 
    sizew=w; 
    sizeh=h; 
    if sizew > sizeh || sizeh < sizew 
     w=sizew-sizeh 
    else 
     h=sizeh-sizew 
    end 
end 

crop2= imcrop(B,[crop(1) crop(2) w h]); 

dicomwrite(crop2, 'a.dcm'); 

我不认为这是正确的,因为我不知道如何获得位置图像裁剪。

+1

是的。但首先告诉我们你曾尝试过什么。 – Dan 2013-03-19 11:40:49

回答

0

试试这个

[crop rect] = imcrop(B); % interactively crop 
if rect(3) ~= rect(4), % not square 
    c = rect(1:2) + .5*rect(3:4); % center 
    w = min(rect(3:4)); % take min dimension 
    rect = [ ceil(c-.5*[w w]), w, w ]; 
    crop = imcrop(B, rect); % re-crop 
end 
+0

非常感谢 – user2157806 2013-03-19 15:08:31

0

我想,你的问题是在Matlab的数字坐标系。你可以找到更多的信息是这个link