首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Matlab :图像区域分析仪。代替“bwpropfilt”?

Matlab :图像区域分析仪。代替“bwpropfilt”?
EN

Stack Overflow用户
提问于 2016-09-29 10:37:04
回答 1查看 965关注 0票数 0

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

edge成功地工作了:

代码语言:javascript
运行
复制
final_edge = edge(gray_I,'sobel');
BW_out = bwareaopen(imfill(final_edge,'holes'),20);
figure; 
imshow(BW_out);

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

代码语言:javascript
运行
复制
% 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呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-29 13:32:11

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

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

代码语言:javascript
运行
复制
% 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的,因此我编写的代码与函数的逻辑是一致的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39767979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档