⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 s4p.m

📁 利用sobel算子和霍夫变换求出图像的边缘
💻 M
字号:
%=========================================s4.m===========================================
%估算水管直径
I = imread('pipe_out.jpg');                     %读入已经标记出边界的图像
x = 1:L(2)+2;
d = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0];  %记录直径的数组

%求出直径的斜率
k1 = -cos(th1)/sin(th1);
k2 = -cos(th2)/sin(th2);
k3 = 1/2*(k1+k2);
k = -1/k3;

%绘制出20条直径,用于估算水管的直径长度
for i = 1:20,
    y = round(1000-1000*i + k*x);               %直径的直线方程,相邻的直线截距相差1000个像素
    
    %求出该直径的长度,存放到数组里
    x1 = (r1/sin(th1) - 1000*(1-i))/(k + cos(th1)/sin(th1));
    x2 = (r2/sin(th2) - 1000*(1-i))/(k + cos(th2)/sin(th2));
    d(i) = sqrt((x1-x2)^2 + ((1000*(1-i)+k*x1) - (1000*(1-i)+k*x2))^2);
    
    %绘制这条直径在水管边缘内的部分,为了显示清楚,使用红色并对x方向和y方向各画3个像素
    for j = 2:L(2)+1,
        if (y(j)>((r2 - j*cos(th2))/sin(th2))) && (y(j)<((r1 - j*cos(th1))/sin(th1))),
            I(y(j)-1,j-1,1) = 255;
            I(y(j)-1,j-1,2) = 0;
            I(y(j)-1,j-1,3) = 0;
            I(y(j)-1,j,1) = 255;
            I(y(j)-1,j,2) = 0;
            I(y(j)-1,j,3) = 0;
            I(y(j)-1,j+1,1) = 255;
            I(y(j)-1,j+1,2) = 0;
            I(y(j)-1,j+1,3) = 0;
            I(y(j),j-1,1) = 255;
            I(y(j),j-1,2) = 0;
            I(y(j),j-1,3) = 0;
            I(y(j),j,1) = 255;
            I(y(j),j,2) = 0;
            I(y(j),j,3) = 0;
            I(y(j),j+1,1) = 255;
            I(y(j),j+1,2) = 0;
            I(y(j),j+1,3) = 0;
            I(y(j)+1,j-1,1) = 255;
            I(y(j)+1,j-1,2) = 0;
            I(y(j)+1,j-1,3) = 0;
            I(y(j)+1,j,1) = 255;
            I(y(j)+1,j,2) = 0;
            I(y(j)+1,j,3) = 0;
            I(y(j)+1,j+1,1) = 255;
            I(y(j)+1,j+1,2) = 0;
            I(y(j)+1,j+1,3) = 0;
        end
    end
end
di = sum(d) / length(d)                     %求出直径数组的均值,即估算出来的水管直径
imwrite(I,'result.jpg','jpg');                   %将处理后的图像输出到result.jpg
%=======================================s4.m(end)=========================================

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -