【文件属性】:
文件名称:canny算子的实现
文件大小:360KB
文件格式:RAR
更新时间:2023-02-26 04:36:04
图像分析 canny USTC
USTC研一图像分析课程,自己实现canny算子
I = imread('test images\test images\lenna.jpg');
J= imread('test images\test images\airport.tif');
K = imread('test images\test images\cameraman.jpg');
L = imread('test images\test images\chip.tif');
I = rgb2gray(I);
%% 高斯平滑及差分
%构造高斯差分模板并计算两个方向的梯度
[Ixx,Iyy] = My_Gaussian(I,1);%lenna
[Jxx,Jyy] = My_Gaussian(J,3.5);%airport
[Kxx,Kyy] = My_Gaussian(K,1.2);%camera
[Lxx,Lyy] = My_Gaussian(L,0.8);%chip
%% 梯度大小与方向
[angleII,II] = grad(Ixx,Iyy);
[angleJJ,JJ] = grad(Jxx,Jyy);
[angleKK,KK] = grad(Kxx,Kyy);
[angleLL,LL] = grad(Lxx,Lyy);
show_image1(I,Ixx,Iyy,II,1);
show_image1(J,Jxx,Jyy,JJ,2);
show_image1(K,Kxx,Kyy,KK,3);
show_image1(L,Lxx,Lyy,LL,4);
%% 非极大值抑制
III = NMS(II,angleII);
JJJ = NMS(JJ,angleJJ);
KKK = NMS(KK,angleKK);
LLL = NMS(LL,angleLL);
show_image2(II,III,5);
show_image2(JJ,JJJ,6);
show_image2(KK,KKK,7);
show_image2(LL,LLL,8);
%% 双阈值检测和连接
[edge_detI,edgeI] = My_Edge_Det(III);%Lena
[edge_detJ,edgeJ] = My_Edge_Det(JJJ);%airport
[edge_detK,edgeK] = My_Edge_Det(KKK);%camera
[edge_detL,edgeL] = My_Edge_Det(LLL);%chip
show_image3(edge_detI,edgeI,9);
show_image3(edge_detJ,edgeJ,10);
show_image3(edge_detK,edgeK,11);
show_image3(edge_detL,edgeL,12);
【文件预览】:
matalb_code
----NMS.m(1KB)
----show_image1.m(235B)
----test images()
--------test images()
----show_image3.m(168B)
----My_Edge_Det.m(1KB)
----grad.m(151B)
----canny.m(1KB)
----My_Gaussian.m(1KB)
----show_image2.m(152B)