【问题标题】:Matlab : image region analyzer. Alternative for 'bwpropfilt'?Matlab:图像区域分析器。 'bwpropfilt' 的替代品?
【发布时间】:2016-10-01 04:21:09
【问题描述】:

我正在运行基本的边缘检测来检测基于此的窗口区域 http://www.mathworks.com/videos/edge-detection-with-matlab-119353.html

edge 成功运行:

final_edge = edge(gray_I,'sobel');
BW_out = bwareaopen(imfill(final_edge,'holes'),20);
figure; 
imshow(BW_out);

现在当使用以下这些代码来根据属性过滤图像时,我的 MATLAB R2013a 似乎无法识别这个bwpropfilt 方法。

% imageRegionAnalyzer(BW);

% Filter image based on image properties
BW_out = bwpropfilt(BW_out,'Area', [400, 467]);
BW_out = bwpropfilt(BW_out,'Solidity',[0.5, 1]);

上面写着:

Undefined function 'bwpropfilt' for input arguments of type 'char'.

那么我应该用什么来改变这个bwpropfilt

【问题讨论】:

    标签: image matlab image-processing


    【解决方案1】:

    bwpropfilt 只需查看从regionprops 输出的相应属性,并为您提供符合该特定范围的对象,并过滤掉范围之外的对象。您可以通过显式调用regionprops 来重写算法,创建一个logical 数组来索引结构以仅保留与您想要的属性对应的正确范围内的值(在bwpropfilt 的第三个输入中看到)检查(在bwpropfilt 的第二个输入中看到)。如果您想在过滤后最终重建图像,则需要使用在PixelIdxList 属性中找到的列主要线性索引,将它们全部堆叠到一个向量中并通过设置所有这些值写入新的输出图像到true

    具体来说,您可以使用以下代码重现您显示的最后两行代码:

    % Run regionprops and get all properties
    s = regionprops(BW_out, 'all');
    
    %%% For the first line of code
    values = [s.Area];
    s = s(values > 400 & values < 467);
    
    %%% For the second line of code
    values = [s.Solidity];
    s = s(values > 0.5 & values < 1);
    
    % Stack column major indices
    ind = vertcat(s.PixelIdxList);
    
    % Create output image
    final_out = false(size(BW_out));
    final_out(ind) = true;
    

    final_out 包含过滤后的图像,仅保留所需属性指定的范围内的值。

    注意

    上述逻辑仅适用于从regionprops 返回的属性,每个唯一区域仅包含一个标量值。如果您检查在bwpropfilt 中找到的受支持属性,您将看到该列表是在regionprops 中找到的完整列表的子集。这是有道理的,因为某些regionprops 属性会根据您的选择返回一个向量或矩阵,因此如果您有多个值来表征regionprops 返回的特定唯一区域,那么使用范围过滤属性就会变得不明确。

    小提示

    出于好奇,我打开了bwpropfilt 看看它是如何实现的,因为我目前拥有 MATLAB R2016a。上面的逻辑,除了一些异常处理,本质上就是bwpropfilt的实现方式,所以我写的代码是符合函数逻辑的。

    【讨论】:

    • 天哪,我一直在浏览你的个人资料,你是一个活生生的爱因斯坦!顺便说一句,非常感谢!
    • @Hey-men-whatsup 哈哈哈你太客气了 :) 我不会称自己为爱因斯坦,主要是因为我认为我有更好的算术技能 :D。无论哪种方式,非常感谢您的意见,非常欢迎您。祝你好运!
    猜你喜欢
    • 2011-07-18
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多