MATLAB MSER功能检测不起作用

时间:2014-06-24 17:43:19

标签: image-processing matlab matlab-cvst mser

我在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]); 

我做错了什么?

1 个答案:

答案 0 :(得分: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);

感谢您的帮助!