在matlab中自动选择ROI

时间:2013-07-09 07:42:33

标签: matlab image-processing

我的图像中间有一个图案,周围有一个白色区域。我希望只删除矩形中的图案,同时省去多余的不必要的白色区域,即自动选择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

2 个答案:

答案 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代码)