2

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

2 回答 2

2

find以行\而不是 X/Y格式返回结果。为了使您的代码正常工作,您只需要更改

[B, A] = find( imgData ~= 255 );
于 2013-07-09T07:46:25.360 回答
0

有关在 matlab 中自动选择 ROI 的更高级方法,请参阅:http: //imageprocessingblog.com/region-of-interest-selection-for-saliency-maps/ (它具有完整的 MATLAB 代码)

于 2013-09-29T20:43:47.990 回答