?? s4.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 + -