我的图像中间有一个图案,周围有一个白色区域。我希望只删除矩形中的图案,同时省去多余的不必要的白色区域,即自动选择ROI。现在我尝试通过将图像转换为灰度并使用find找到像素值不等于255的所有点来做到这一点。
之后,我只是使用非白色像素的x和y的最大值和最小值来定义imcrop要使用的矩形,但由于某种原因,它并不像我期望的那样。谁能给我一个关于什么错误的想法?
这是代码
function [] = Roi()
imgData=rgb2gray(imread('1.jpg'));
[A,B]=find(imgData~=255);
xmin=min(A);
xmax=max(A);
ymin=min(B);
ymax=max(B);
width = xmax - xmin;
height = ymax - ymin;
imgSelect = imcrop(imgData,[xmin,ymin,width,height]);
imshow(imgSelect);
end
答案 0 :(得分:2)
find
以行 \ 列和非X / Y格式返回结果。为了让你的代码工作,你只需要改变
[B, A] = find( imgData ~= 255 );
答案 1 :(得分:0)
有关在matlab中自动选择ROI的更高级方法,请参阅: http://imageprocessingblog.com/region-of-interest-selection-for-saliency-maps/ (它有完整的MATLAB代码)