基于 !"#$$%&"’(")* 算子的灰度图像边缘检测
王卜堂 & 杨善林 !
(合肥工业大学网络系统研究所,合肥 !#"""c)
<0H.F3:\WdTF4*e*+.M^$4(H
摘 要 在分析常用的 图 象 边 缘 检 测 算 子 基 础 上 ,为 更 精 确 地 检 测 具 有 灰 度 渐 变 和 噪 声 较 多 的 灰 度 图 像 ,论 文 首 先 引
入一种改进的灰度图像的边 缘 检 测 算 子 ,接 着 实 验 验 证 该 算 子 得 到 的 图 像 比 别 的 边 缘 检 测 算 子 处 理 效 果 更 好 ,更 清 楚
和更符合人或计算机识别要求。同时,给出了在 fGQQ%$" 编程环境下 567 位图处理的方法和介绍的边缘检测算子的实
现方法。
关键词 边缘检测 位图结构 图像处理 高斯拉普拉斯算子 模板
文章编号 &""!0E##&0(!""#)!%0"!0"# 文献标识码 : 中图分类号 97#c&
!+", -."/*0$ 12/* 3*4*)4567 8"$*2 67 !"#$$%&"’(")*
9"7/ :#4"7/ ;"7/ <="7(57
(8M,+F+/+* (L G(H2/+*Z ?*+a(Zg P\,+*H,=*L*F BMFh*Z,F+\ (L 9*4IM(3(^\,=*L*F !#"""c)
>?$4+")4: 9I* 2.2*Z FM+Z(K/4*, . H*.M, (L 2Z(4*,,FM^ ^Z.\ )F+H.2 .MK ^Z.\ )F+H.2i,
<’,位 图 信
息头结构 5896:78?;@=<:><’,位图颜色表 ’-5AB:> 和 位
图象素 C 部分。处理位图时要根据文件的这些结构得到位图文
件大小,位图的宽和高,位图的颜色表,位图的色素值等。对于
!D% 级灰度图象,每个象素用 E)F+ 表 示 颜 色 索 引 值 ,在 567 位
图 中 ,位 图 的 每 行 象 素 值 要 填 充 到 一 个 四 字 节 边 界 ,即 位 图 每
行 所 占 的 存 储 长 度 为 四 字 节 的 倍 数 , 不 足 时 将 多 余 位 用 " 填
充。在处理图象应用程序的文档类 G5H2>(4$I 中声明如下:
JK*LFM* N8>9=5O91< HTI>85;R R 存放位图数据的句柄
G7.3*++* SHT2>85;R R 指向调色板 G7.3*++* 类
GPFU* HT,FU*>(4;R R 初始化视图的尺寸
&$& 读取 567 位图
根 据 位 图 567 文 件 的 结 构 , 操 作 567 位 图 文 件 读 入 数
据,重载文档类的 @M@2*M>(4/H*M+()函数如下(调用了 NFM#!
:78 操作 567 位图):
5@@1 G5H2>(4::@M@2*M>(4/H*M+(17G9P9’ 32,U7.+I?.H*)
V G;F3* LF3*;G;F3**M\NZF+*,]L*))
V :LW6*,,.^*5(W(_文件打不开_);Z*+/ZM ;:1P<; ‘
>*3*+*G(M+*M+,();R R 删除文档
5*^FMN.F+G/Z,(Z();R R 更改光标形状
R R 调用 ’*.K>85;F3*()读取图像
9’O
V 5896:7;81<=<:><’ )H2=*.K*Z;
>N@’> Ka5F+,PFU*;=:?>1< I>85;17P9’ 2>85;
5896:78?;@=<:><’ S)H2KZ;R R 指向位图文件信息头 结 构 的 指
针
Ka5F+,PFU*bLF3*$-*+1*M^+I();R R 得到文件长度
FL (LF3*$’*.K ((17P9’)])H2=*.K*Z,,FU*(L ()H2=*.K*Z))X b ,FU*(L
()H2=*.K*Z))Z*+/ZM ;:1P<;
FL()H2=*.K*Z$)L9\2* Xb "WCKC!)Z*+/ZM ;:1P<;R R 申请缓冲区
作者简介:王卜堂(&cjE0),男,硕士研究生,主要研究方向:网络通信,分布式组件技术和图像处理。杨善林(&cCE0),男,教授,博士生导师。
!
!""#$!% 计算机工程与应用
&’()
*(+,-’./)::012341,1125 (06/67689/,)./ :
部算子法。边缘检测就是指图象局部亮度变化最显著的部分,
06/67;/<8(-(=,>?)@ABC@DE);
@F(&’() ** ")GEAHGI J,.C/;
K’() *(.LC=<)::012341.25M((+0.8),.)&’());
@F (F@1E$
+HNE (K’(),>?)@ABC@DE OB@DE2F ()(=6,LJ(./+/,’P
/<))Q*
>?)@ABC@DEOB@DE2F()(=6,LJ(./+/,’/<))
R::012341SI125M ((+0.8),.)&’());&’()
*-S..:GEAHGI
J,.C/;T
U U 读数据,包括位图信息,位图颜色表,位图象素的灰度值
3VK>G *()(=6,L(-J8+/,’/G)$3@)@AX2HIA Q* Y)GEAHGI J,.C/;U U 验证是否是 Y3@A 位
图
V7&’()*&’();(I@A’()’4A4();
U U 自定义函数,根据读入的数据的到位图的宽,高,颜色表来初始
化视图的尺寸,生成调色板
CEAL4A&-4VE(1KBDL4A&-4VE);U U 设置存储路径
CEA62>@F@E>J14N(J,.C/);GEAHGI =[4@AXHGB2G();U U 读取失败
R F@1E$,32GA();
,FZ6EBB4NE)2Z(\不能打开文件\);V7&’()*-S..;
GEAHGI J,.C/;
T/-’7X,=X+
/I>[4@AXHGB2G(); T
]$! 保存 )6L 位图
图象处理后所得到的图象的象素值需要保存,该系统重载
了 文 档 类 的 8IC4^E’25HVEIA()函 数 实 现 处 理 后 的 图 像 保 存 ,
其实现方法较简单不再列举。
! 图像处理
!$] 位图处理的环境
在 [@I>2?B 系 统 中 ,图 像 处 理 需 要 注 意 环 境 信 息 的 设 置 。
在真彩色环境下不需要操作调色板,在 !_% 色环境下才需要操
作调色板,否侧位图将无法正确显示。灰度图象要正确显示,必
须 实 现 逻 辑 调 色 板 和 系 统 调 色 板 , 主 要 通 过 在 主 框 架 类
X)VKJG4VE 中 处 理 [@I>2?B 消 息 [67‘S/(3)源图
(‘)7U‘04 算子
图 #
(K)高斯拉普拉斯边缘检测
由于拉普拉斯算子是一个二阶导数,它将在图象边缘外产
+ /80-.OQ\W)+
Y\/80-.OP + 4;
L L 指向 :;, 第 #%#&’()*+ ,- 行,第 $%#&’()*.,4 个象素的指针
N905^4< +T(V 4.7JK)V N.HJJ3XRW V /80-.@ + 4S;L L 保存象素值
__
N905^4< VT N*U0N;L L 乘上系数
N905^4< T(G2=H8)N3‘5(N905^4<);L L 取绝对值
/N(N905^4< a !&&)I V 4.:5<]T!&&;_
0450IV 4.:5<] T(^M5/DM0A KB3J)(N905^4< + "$&);_
__
-0-K.X(4.:;,,/<5,4.>01:;,,/<5,4@/A01:;,,/<5);2UK34GJ00(B>01:;,,/<5);L L 释放内存
J0<^JM 89EF;
_
在 菜 单 响 应 函 数 中 只 要 调 用 此 函 数 就 可 以 实 现 图 象 的 高
斯拉普拉斯边缘检测。在这里不再给出。
以 下 图 像 是 7U‘04 算 子 和 高 斯 拉 普 拉 斯 算 子 处 理 的 结 果
(图 #)。
从上面的几幅处理后的图像,能看出高斯拉普拉斯算子处
理 的 效 果 较 好 ,能 很 精 确 地 检 测 图 像 的 边 缘 ,而 且 保 证 图 像 的
生一个陡峭的零交叉,由于噪声点对边缘检测有一定的影响,
所以高斯拉普拉斯算子是效果较好的边缘检测器。它把高斯平
滑滤波器和拉普拉斯锐化滤波器结合起来,先平滑掉噪声,再
进行边缘检测,所以效果较好,常用的高斯拉普拉斯算子是 &’
& 模板,如图 ! 所示。
( 高斯拉普拉斯算子的实现
论文给出高 斯 拉 普 拉 斯 算 子 的 实 现 算 法 ,在 )*++环 境 下
调试。在 *,-.)/01 中 响 应 菜 单 操 作 实 现 灰 度 图 象 的 边 缘 检
测 , 通 过 定 义 一 个 接 口 函 数 23.45 (26789 4.:;,,/<5,2=>?
4@/A? 4C0/DB<),其中,参数:4.:;,,/<5 为指向 源 :;, 图
像指针,4@/A? 4@/A? 4C0/DB<)
I 26789 4.:5<;26789 4.7JK L L 指向缓冲图象的指针和源 图 象 的
指针
26789 4.>01:;,,/<5;C2=*H2 B>01:;,,/<5;
L L 指向缓存 :;, 图像的指针
/M<
/80-.@;G2=H8
/80-.C;/M<
N80-.*;/M<
/80-.OP;/M<
连通性。
/80-.OQ;G2=H8 380-.43<0R!&S;
L L 分 别 为 模 板 高 度 ,宽 度 ,系 数 ,中 心 元 素 ! 坐 标 ,中 心 元 素 " 坐
标,模板数组
& 结论
B>01:;,,/<5T2UK34H44UK(2C>:,4@/A01:;,,/<5 T(KB3J V )2UK342UKW(B>01:;,,/<5);
4.:5< T(KB3J V)4.>01:;,,/<5;-0-K.X (4.>01:;,,/<5,4.:;,,/<5,
4@/A? /;2=>? Y;2=>? W;2=>? 4;L L 循环变量
2=>? 42/M0,X<05T @;:8C,Q8F7(4@/A01:;,,/<5 + 42/M0,X<05 V(4C0/DB<\
]\/)+ Y;
L L 指向新图的 #,$ 位置
G2=H8 N905^4