在CIELab颜色空间下使用八方向Sobel算子实现边缘检测

该博客介绍了如何在CIELab颜色空间中利用八方向Sobel算子进行边缘检测,首先将RGB图像转换为CIELab,然后计算不同方向的梯度并取最大值作为输出。虽然作者指出自定义滤波器导致计算速度较慢,但展示了算法的效果和运行时间,并提供了相关代码供下载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考河北师范大学硕士学位论文——基于八方向Sobel算子的边缘检测算法研究。
由于自己实现滤波器运算,计算速度很慢,以后有能力再进行改进。


算子定义如下:
这里写图片描述


算法思路:
1.将RGB图像转化为CIELab颜色空间的图像。
2.计算不同方向上的梯度,乘以权值后取最大值当作输出值。
这里写图片描述


效果如下:
这里写图片描述
运行时间:33.543444 秒。

这里写图片描述
运行时间:79.695009 秒。

跑的好慢QAQ


代码如下:
CIELabEdge.m(算法的总入口)

%在CIELab颜色空间下对图片进行边缘检测(参数为待处理的RGB图像)
%使用论文中的八方向Sobel算子进行滤波
%论文引自--郑英娟. 基于八方向Sobel算子的边缘检测算法研究. 河北师范大学硕士学位论文. 2013.3.26

%From:Yinggang Wang
%Create Date:2018.3.30

function [] = CIELabEdge(img)

%颜色空间转换
Lab = RGB2Lab(img);

%滤波处理
Edge = MyFilter(Lab);

%输出结果
figure('NumberTitle','off','Name','边缘');
imshow(Edge,[]);

figure('NumberTitle','off','Name','边缘(负片)');
imshow(imcomplement(Edge),[]);

MyFilter.m(自己实现的滤波器)

%使用滤波器滤波(参数:CIELab颜色空间的三维矩阵)(图像输出大小比实际小一点)
%
%From:Yinggang Wang
%Create Date:2018.3.30

function im = MyFilter(ori)

s = size(ori);
im = zeros(s(1),
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值