首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何测量图像中像素的缺陷大小(自动)?

如何测量图像中像素的缺陷大小(自动)?
EN

Stack Overflow用户
提问于 2019-12-15 20:58:33
回答 1查看 131关注 0票数 2

因此,我有一个半导体的数字图像,其中有一个缺陷,我设法通过这样的分割技术来提取:

代码语言:javascript
复制
fig1 = imread('figure1.png');
imshow(fig1);

title('Original image', 'FontSize', 18);
%Gray image
fig1Gray = rgb2gray(fig1);



%Binary image
BW1 = imbinarize(fig1Gray,0.5);
imshow(BW1);
title('Binary image', 'FontSize', 18);

sr = strel('square',5);

%Dilation image
dilated1 = imdilate(BW1,sr);
imshow(dilated1);
title('Dilated image', 'FontSize', 18);

minus1 = ~(BW1-dilated1);
imshow(minus1);
title('Minus image', 'FontSize', 18);
imshowpair(minus1,BW1,'montage');

如何测量以像素为单位的缺陷区域的大小?

编辑:添加图像

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-15 22:02:18

您可以使用布康康普进行集群:

代码语言:javascript
复制
CC = bwconncomp(~BW1)

返回以下结构:

代码语言:javascript
复制
CC = 

  struct with fields:

    Connectivity: 8
       ImageSize: [247 247]
      NumObjects: 1
    PixelIdxList: {[404×1 double]}

假设您的预处理阶段是正确的,缺陷区域的大小是:

代码语言:javascript
复制
length(CC.PixelIdxList{1})

您还可以使用区域道具

代码语言:javascript
复制
fig1 = imread('figure1.png');
fig1Gray = rgb2gray(fig1);
BW1 = imbinarize(fig1Gray,0.5);
stats = regionprops(~BW1, 'Area');
biggest_area = max([stats.Area]);

结果: biggest_area = 404

用黄色标记区域:

代码语言:javascript
复制
Y = im2uint8(cat(3, ones(size(BW1)), ones(size(BW1)), zeros(size(BW1))));
fig1(~cat(3, BW1, BW1, BW1)) = Y(~cat(3, BW1, BW1, BW1));
figure;imshow(fig1)

输出:

白色的声音看起来也是缺陷区域的一部分。

如果您需要包含一些探测区域,请使用imdialte

代码语言:javascript
复制
BW2 = imdilate(~BW1, ones(5));fig1(cat(3, BW2, BW2, BW2)) = Y(cat(3, BW2, BW2, BW2));figure;imshow(fig1)

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

https://stackoverflow.com/questions/59348007

复制
相关文章

相似问题

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