因此,我有一个半导体的数字图像,其中有一个缺陷,我设法通过这样的分割技术来提取:
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');如何测量以像素为单位的缺陷区域的大小?
编辑:添加图像

发布于 2019-12-15 22:02:18
您可以使用布康康普进行集群:
CC = bwconncomp(~BW1)返回以下结构:
CC =
struct with fields:
Connectivity: 8
ImageSize: [247 247]
NumObjects: 1
PixelIdxList: {[404×1 double]}假设您的预处理阶段是正确的,缺陷区域的大小是:
length(CC.PixelIdxList{1})您还可以使用区域道具:
fig1 = imread('figure1.png');
fig1Gray = rgb2gray(fig1);
BW1 = imbinarize(fig1Gray,0.5);
stats = regionprops(~BW1, 'Area');
biggest_area = max([stats.Area]);结果: biggest_area = 404
用黄色标记区域:
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:
BW2 = imdilate(~BW1, ones(5));fig1(cat(3, BW2, BW2, BW2)) = Y(cat(3, BW2, BW2, BW2));figure;imshow(fig1)

https://stackoverflow.com/questions/59348007
复制相似问题