1

我在MATLAB 的计算机视觉工具箱中使用了detectMSERFeatures函数,并且遇到了一些错误。我有一张黑白图像,我正在读取它以检测其特征,但是我想在运行特征检测之前反转图像,或者我正在过滤图像中的红色。因此,无论哪种方式,我都有一个我试图在detectMSERFeatures中使用的二进制图像。我知道这不起作用,但我尝试了几次转换为可用格式的转换,但似乎都没有。如果我在原始图像上使用rgb2gray , detectMSERFeatures将获取特征,但如果我尝试转换它则不会。这是我到目前为止所尝试的一切:

Target1=imread('Decal0.JPG');
Target1bw=~im2bw(Target1);
Target=uint8(Target1bw); 

[m,n]=size(Target);
regionsTarget = detectMSERFeatures(Target, 'MaxAreaVariation',0.15,...
'ThresholdDelta',15, 'RegionAreaRange',[10000 (m*n)/2]);  

Target1=imread('Decal0.JPG');
Target1bw=~im2bw(Target1);
Target=im2double(Target1bw);  

regionsTarget = detectMSERFeatures(Target, 'MaxAreaVariation',0.15,...
'ThresholdDelta',15, 'RegionAreaRange',[10000 (m*n)/2]); 

Target1=imread('Decal0.JPG');
Target1bw=~im2bw(Target1);
Target2=255*Target1bw;
[m,n]=size(Target2);
Target3=zeros(m,n,3);
Target3(:,:,1)=Target2;
Target3(:,:,2)=Target2;
Target3(:,:,3)=Target2;
Target3=uint8(Target3);
Target=rgb2gray(Target3);

regionsTarget = detectMSERFeatures(Target, 'MaxAreaVariation',0.15,...
'ThresholdDelta',15, 'RegionAreaRange',[10000 (m*n)/2]); 

我做错了什么?

4

1 回答 1

1

我向 Mathworks 提出了这个问题,这是 MATLAB 中的一个错误。这是他们的回应:

“我们在处理二进制图像时检测到 detectMSERFeatures 中的一个错误。解决方法是使用 regionprops 来检测二进制图像的区域。然后,可以按如下方式构造 MSERRegions:

props = regionprops(im2bw(newGrayTarget),'PixelList');

pixlist = {}

for i = 1:numel(props)
  pixlist = [pixlist; int32(props(i).PixelList)]; end

r = MSERRegions(pixlist);

谢谢您的帮助!

于 2014-07-30T13:10:13.827 回答