b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

canny边缘检测详解及编程实现_opencv canny边缘检测_canny算子边缘检测(2)

电脑杂谈  发布时间:2017-02-23 00:22:12  来源:网络整理

sum = sum + conv(i,j);

end

end

conv = conv./sum;%标准化

%对图像实施高斯滤波

for i = 1:height

for j = 1:width

sum = 0;%临时变量

for k = 1:5

for m = 1:5

if (i - 3 + k) > 0 && (i - 3 + k)0 && (j - 3 + m)abs(gradX)

weight = abs(gradX) / abs(gradY);%权重

grad2 = d(i - 1,j);

grad4 = d(i + 1,j);

%如果x、y方向导数符号相同

%像素点位置关系

%g1 g2

%C

%g4 g3

if gradX * gradY > 0

grad1 = d(i - 1,j - 1);

grad3 = d(i + 1,j + 1);

else

%如果x、y方向导数符号反

%像素点位置关系

%g2 g1

%C

%g3 g4

grad1 = d(i - 1,j + 1);

grad3 = d(i + 1,j - 1);

end

%如果X方向幅度值较大

else

weight = abs(gradY) / abs(gradX);%权重

grad2 = d(i,j - 1);

grad4 = d(i,j + 1);

%如果x、y方向导数符号相同

%像素点位置关系

%g3

%g4 C g2

%g1

if gradX * gradY > 0

grad1 = d(i + 1,j + 1);

grad3 = d(i - 1,j - 1);

else

%如果x、y方向导数符号反

%像素点位置关系

%g1

%g4 C g2

%g3

grad1 = d(i - 1,j + 1);

grad3 = d(i + 1,j - 1);

end

end

%利用grad1-grad4对梯度进行插值

gradTemp1 = weight * grad1 + (1 - weight) * grad2;

gradTemp2 = weight * grad3 + (1 - weight) * grad4;

%当前像素的梯度是局部的最大值,可能是边缘点

if gradTemp >= gradTemp1 && gradTemp >= gradTemp2

K(i,j) = gradTemp;

else

%不可能是边缘点

K(i,j) = 0;

end

end

end

end

figure,imshow(K,[])

title('非极大值抑制后的结果')

%定义双阈值:EP_MIN、EP_MAX,且EP_MAX = 2 * EP_MIN

EP_MIN = 12;

EP_MAX = EP_MIN * 2;

EdgeLarge = zeros(height,width);%记录真边缘

EdgeBetween = zeros(height,width);%记录可能的边缘点

for i = 1:height

for j = 1:width

if K(i,j) >= EP_MAX%小于小阈值,不可能为边缘点

EdgeLarge(i,j) = K(i,j);

else if K(i,j) >= EP_MIN

EdgeBetween(i,j) = K(i,j);

end

end

end

end

%把EdgeLarge的边缘连成连续的轮廓

MAXSIZE = ;

Queue = zeros(MAXSIZE,2);%用数组模拟队列

front = 1;%队头

rear = 1;%队尾


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-33947-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...