java实现数字图像的边缘检测_canny 算子实现图像边缘检测(详细过程附源码)...

本文详细介绍了如何使用Canny算法在Java中实现数字图像的边缘检测,包括高斯滤波、梯度计算、非极大值抑制、双阈值处理和边缘连接等步骤,提供完整源码并展示实验效果。
摘要由CSDN通过智能技术生成

canny边缘检测法是高斯函数的一阶微分,它能在噪声抑制和边缘检测之间取得较好的平衡.

环境:windows xp+matlab 2010b

时间:2011/12/25

canny算法检测边缘主要步骤:

1)用3x3高斯滤波器进行滤波,消除噪声;

2)针对每一个像素,计算横向与纵向两方向的微分近似,以得到像素的梯度大小和方向;

3)对梯度进行"非极大抑制"(非局部最大值置0);

4)对梯度取两次阈值;

5)对边缘进行连接;

下面详细说明各个步骤:

0)读入图像:

clear;

clc;

i=imread('light.jpg');

k=rgb2y(i);%获取h分量,即亮度分量

又根据公式Brightness = 0.3 * R + 0.6 * G + 0.1 * B;计算出亮度分量y;

a4c26d1e5885305701be709a3d33442f.png

function k=rgb2y(z)

%i必须为rgb三维矩阵

[m,n,p]=size(z);

k=zeros(m,n);

z=double(z);

for i=1:m

for j=1:n

k(i,j)=0.3*z(i,j,1)+0.6*z(i,j,2)+0.1*z(i,j,3);

end

end

a4c26d1e5885305701be709a3d33442f.png

1)用3x3高斯滤波器进行滤波,消除噪声;

a4c26d1e5885305701be709a3d33442f.png

function j=gaosi(i);

%i必须为二维double矩阵

j=i;

[h,w]=size(i);

for m=2;h-1

for n=2:w-1

j(m,n)=(i(m,n-1)+2*i(m,n)+i(m,n+1))/4;%横向高斯滤波

end

end

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值