gpt4 book ai didi

algorithm - 检测气缸表面的小针孔

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:06:17 25 4
gpt4 key购买 nike

我只从捕获的图像 (RGBImg_Raw) 中分割了一个瓶子。接下来,我要检测这个小孔。但是,我无法继续进行。

enter image description here

我尝试使用 filt_img = imfilter(img, fspecial('log',31,5)); 按照 jucestainthis post 中的建议.但这似乎也行不通。我得到一个全黑的图像。

我还尝试用各种阈值检测 Canny 和 Sobel 图像边缘,但它很嘈杂。

I2 = adapthisteq(GrayImg);
BW1 = edge(I2,'canny',0.05);
BW1 = edge(I2,'sobel',0.1);

我希望在那个针孔周围画一个圆圈,这样我就可以找到连接的组件并检测到那个孔。

有什么建议吗?

我正在使用 MATLAB。附件在Dropbox .

最佳答案

你可以试试这段代码,它基于简单的分割步骤:

        clc
clear all
close all

im1 = imread('bottle.png');
gray1 = (rgb2gray(im1));
gray1 = imfilter(gray1,fspecial('gaussian',[5,5],1.5),'replicate');
figure,imshow(im1,[])
[~,~,mg,~] = ImageFeatures.Gradients(gray1); % Sobel is used here.
mgBw = im2bw(mg,graythresh(mg));
rg = regionprops(mgBw,'Area','PixelIdxList');

minAreaObj = false(size(mgBw));
for i = 1:length(rg)
area = rg(i).Area;
idx = rg(i).PixelIdxList;

if area<1000
minAreaObj(idx) = true;
end

end

minAreaObj = imopen(minAreaObj,strel('disk',3));

算法结果如下:

enter image description here

enter image description here

渐变代码:

  function [gx,gy,mag,phi] = Gradients(gray)
gray = double(gray);
horzmask = fspecial('sobel');
% vertmask = horzmask';

gx = imfilter(gray,horzmask,'replicate');
gy = imfilter(gray,horzmask','replicate');

phi = (atan2((gy),(gx)));

mag = mat2gray(sqrt(gx.^2+gy.^2));
end

关于algorithm - 检测气缸表面的小针孔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33360401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com