基于边缘检测的图像锐化算法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Sobel 算子是一种加权平均算法 ,他认为 ,邻域的象素 对当前象素产生的影响不是等价的 ,所以距离不同的象素 具有不同的权值 ,对结果产生的影响也不同 。一般距离越 大 ,影响越小 。Sobel 对式 (5) 和式 (6) 提出如下的近似卷 积算子 :
-1 0 1
Gx = - 2 0 2
( 7)
/ 3 对于 256 灰度图像 3 /
{ Temp + = Histogram[i ] ;
/ 3 Histogram 是存储梯度幅值统计信息的直方图 3 / if ( Temp > = EdgeSum) { T = i ; break ; }
}
将 T 代入式 (9) ,得到的梯度二值化图像 e( x , y) 即为 存储边缘信息的图像 。图 3 仿真了当 P 取 0. 25 时图 2 所 对应的梯度二值化图像 。
111
W
=
1 9
1
1
1
(2)
111
对图像上每一点算出 l ( x , y) 后 ,代入式(1) 即可求得
g( x , y) 值 。例如 ,当取 C = 9 时 ,对应于式 (1) 的掩模为 :
-1 -1 -1
W1 = - 1 - 9 - 1
(3)
-1 -1 -1 此即为图像的一种反锐化掩模 。根据 C 的取值 ,可以计算 出不同的掩模 。
的梯度幅值应比其他位置高 。基于这一点 , 可以使用式
(9) 来产生包含最终边缘信息的二值化图像 。
| G | | G | ≥ T
e( x , y) = 0
其他
(9)
式中 T 是一个非负门限值 。适当选择 T , 可使二值化图像
e( x , y) 中只包含图像的主要轮廓和边缘的梯度幅值 。
一种合理确定 T 的方法是使用统计特性 。设已经被计
显然 , 式 (1) 中第二项的差值消除了原始图像的大部
收稿日期 :2005 11 30
90
分低频成分 ,而较完整地保留了高频部分 。因此 , 在第一项 上叠加此差值的 C 倍 , 将增强图像的高频分量 , 而低频部 分几乎不受影响 。
在实现时 , l ( x , y) 可用简单局部平均法计算 ,邻域尺 寸取 3 ×3 窗口 ,掩模为 :
将 W1 应用于图像上的每一点 ,可以方便快捷地实现 图像锐化 。但是 ,由于这种方法增强了图像整体的高频成 分 ,在突出边缘和轮廓的同时也放大了高频噪声 ,导致锐 化后的图像在非边缘区域出现明显的毛刺噪声 (见图 5) , 给观察者以失真的感觉 。这一点同时也是其他常用的整
体锐化 算 法 的 通 病 。因 此 , 有 必 要 研 究 一 种 方 法 来 改 进他 。
图 1 边缘锐化算法流程 (下转第 95 页) 91
《现代电子技术》2006 年第 12 期总第 227 期
接寻址 ;改变 SP 值之后也不能马上进行与 SP 有关的寻址 或其他操作 。 2. 5. 2 正确设置寄存器
手工汇编优化过程中要对一些寄存器设置进行修改 , 如果设置错误就会导致运行结果改变。比较常见的是对 ST1 寄 存 器 的 SXM , OVM , FRCT 位 和 PMST 寄 存 器 的 SMUL 位的设置 。
手工汇编优化的目的是提高程序的运行效率 ,而不对 算法进行修改 ,因此要保证程序运行结果不发生改变 。可 以制作一段测试序列用来监测运行结果是否正确 。构造 测试序列时要尽量涵盖各种典型情况 , 还要有足够的长 度 。如果测试序列构造不当 ,测试的时候很可能不经过某 些程序分支 ,对这部分代码的优化效果及正确性也就无从 检验了 。
针对这一点 ,考虑先使用边缘检测算法检出图像的所 有边缘信息 ,进而设定阈值判决哪些是真正的边缘 ,哪些 应被视为噪声 ,最后对认定为边缘的象素进行锐化 ,而未 认定为边缘的象素则保持原状 。
3 边缘检测 、边缘判决和二值化
边缘指的是图像中象素的值有突变的地方[2] 。常用
的边缘检测方法有一阶导数和二阶导数方法 。综合考虑 算法的效率和边缘检测的准确程度 ,选取一阶导数方法中 的 Sobel 算子作为边缘检测器 。
( 5)
Gy
=
5 f ( x , y) 5y
( 6)
梯度属于连续函数的概念 ,而数字图像是离散函数 ,
所以只能采取近似的计算方法 。考虑到一阶导数是线性
的 ,且计算方法不因象素位置而改变 ,因此 ,对 Gx 和 Gy 的 计算经常使用卷积来近似 。目前已经提出了许多种不同
的卷积算子 ,常用的有 Robert s 算子 、Prewitt 算子和 Sobel 算子[2 ] 。
Keywords :image sharpening ;unsharp masking ;edge detectio n ; Sobel operato r ;edge sharpening
数字图像经过转换和传输后 ,难免产生模糊 。图像锐 化的主要目的在于补偿图像轮廓、突出图像的边缘信息以 使图像显得更为清晰 ,从而符合人类的观察习惯 。图像锐 化的实质是增强原图像的高频分量。常规的锐化算法以此 为依据 ,对整幅图像进行高频增强。这就产生了一个问题 : 由于退化图像的高频分量既包含有效信息 ,又含有随机噪 声 ,整体锐化的做法在增强原始信息的的同时也放大了高 频噪声 ,表现为图像经过锐化后出现明显的毛刺噪声。
算了梯度的象素总数为 Sum , 给出一个百分比 P , 则梯度
幅值最高的 ( P ×Sum) 个象素是边缘 。这样 , T 可以根据 P
间接算出 。以下给出确定 T 值的 C 程序代码 :
Temp = 0 ;
EdgeSum = (unsigned lo ng) ( P 3 Sum) ;
for (i = 255 ;i > = 0 ;i - - )
( 10) 对图像上每一点 ,若 e( x , y) > 0 ,则表示该处是边缘 , 因而使用反锐化掩模对该象素进行锐化 ; 若 e( x , y) = 0 , 则表明该处不是边缘 ,不需锐化 ,该点象素值保持原状 。
5 实验结果
本实验采用分辨率为 256 ×256 的静止灰度图像 Lena (见图 2) 。主要算法在 Micro soft Visual C + + 6 . 0 开发环 境中用 C 语言实现 。算法流程的全过程如图 1 所示 。
ZEN G Jialiang
(Shantou Polytechnic College ,Shantou ,515078 ,China)
Abstract : Image sharpening is a met hod which to make t he digital image much more clearly by compensating outlines and sharpening edges of image. The aim of t his met hod is to enhance t he high f requency part of original image. No rmal sharpening algo rit hm performs high f requency enhancement for t he whole image ,t his will get a result image wit h o bvious noises. To re2 solve t his p ro blem ,base on t he understanding of t he t heory of sharpening ,p resent s a met hod to detect edges of image at first , and t hen uses t hese edges to do high f requency enhancement . Experiment s p rove t hat t his met hod can sharpen image effectively and remove t he noises at t he same time.
《现代电子技术》2006 年第 12 期总第 227 期
2 改进的思路
整体锐化之所以导致噪声放大 ,原因在于将所有象素 的高频分量不加区分地视为图像的轮廓和边缘 ,而忽略了 其中也包含噪声 。事实上 ,对于获取自现实世界的图像而 言 ,与图像总体象素数量相比 ,轮廓和边缘总是占较小的 比例 ,且其高频分量的幅值一般都比较高 。
嵌入式与单片机
3 结 语
综上所述 , C 代 码的 手 工 汇 编 优 化 , 就 是 充 分 利 用 DSP 的片内资源 ,发挥 DSP 潜在的计算能力 ,降低代码冗 余度的过程 。本文所述内容来源于对 G. 729 算法 C 语言 源代码进行的手工汇编优化工作 ,通过运用上述优化技 术 ,笔者将编码运算量从大约 900 MIPS 初步优化到了 50 MIPS以下 。虽然这些经验都是针对 TMS320C5410 芯 片总结的 ,但也同样适用于 5000 系列的其他芯片 ,对于其 他型号的 DSP 器件也有一定的借鉴意义 。
-1 0 1
-1 -2 -1
Gy = 0 0 0
( 8)
121 对图像的每一点 (上 、下 、左 、右 4 边除外) 求出 Gx 和 Gy , 然后代入式 (1) ,即可求得该点的梯度幅值 。
嵌入式与单片机
接下来的问题是判决边缘 。如前所述 ,虽然对图像上
的每一点都可以求得一个梯度幅值 ,但图像轮廓和边缘处
一阶导数方法将图像函数的梯度视为边缘 ,因此 ,基 于一阶导数的边缘检测算法实际上是通过如下公式求解
图像的梯度幅度 :
| G | = Gx 2 + Gy 2
( 4)
其中 , G为图像梯度 ; Gx 和 Gy 分别为原始图像 f ( x , y) 在 x
方向和 y 方向上的偏导数 。即 :
Gx
=
5 f ( x , y) 5x
数字化设备
曾嘉亮 :基于边缘检测的图像锐化算法
基于边缘检测的图像锐化算法
曾嘉亮
(汕头职业技术学院 广东 汕头 515078)
摘 要 :图像锐化是一种补偿轮廓 、突出边缘信息以使图像更为清晰的处理方法 ቤተ መጻሕፍቲ ባይዱ锐化的目标实质上是要增强原始图 像的高频成分 。常规的锐化算法对整幅图像进行高频增强 ,结果呈现明显噪声 。为此 ,在对锐化原理进行深入研究的基础 上 ,提出了先用边缘检测算法检出边缘 ,然后根据检出的边缘对图像进行高频增强的方法 。实验结果表明 ,该方法有效地解 决了图像锐化后的噪声问题 。
关键词 :图像锐化 ;反锐化掩模 ;边缘检测 ; Sobel 算子 ;边缘锐化 中图分类号 : TP317. 4 文献标识码 :B 文章编号 :1004 373X(2006) 12 090 02
An Image Sharpening Algorithm Based on Edge Detection
4 边缘锐化
得到 e( x , y) ,就可以用来扩充式 (1) ,从而实现数字 图像的边缘锐化 ,具体算法如式 (10) :
f ( x , y) + C[ f ( x , y) - l ( x , y) ] e( x , y) > 0
g( x , y) =
f ( x , y)
e( x , y) = 0
其中 ,SXM 是符号扩展方式位 ,OVM 是溢出方式位 , FRCT 是小数方式位 ,SMUL 是乘法饱和方式位 ,不同的设 置会导致不同的运行结果 ,但并不是所有的指令都受这些 状态位的影响 ,例如无论 SXM 为何值 ,LDM MMR ,dst 都 不进行符号扩展 ,对这样的指令要多加注意。 2. 5. 3 监测程序运行结果
本文提出了一种基于边缘检测的图像锐化方法 ,在实 现锐化的同时 ,避免了放大噪声的问题 。
1 整体锐化
相对加强高频成分的方法在空间域上较常用的是反 锐化掩模法[1] 。该方法在计算机中实现起来很方便 ,其基 本算法如下 :
g( x , y) = f ( x , y) + C[ f ( x , y) - l ( x , y) ] (1) 其中 f ( x , y) 为 原 始 图 像 ; l ( x , y) 是 用 人 为 方 法 模 糊 f ( x , y) 所得到的图像 ; C 是常数 , 用以控制图像的锐化 程度 。
-1 0 1
Gx = - 2 0 2
( 7)
/ 3 对于 256 灰度图像 3 /
{ Temp + = Histogram[i ] ;
/ 3 Histogram 是存储梯度幅值统计信息的直方图 3 / if ( Temp > = EdgeSum) { T = i ; break ; }
}
将 T 代入式 (9) ,得到的梯度二值化图像 e( x , y) 即为 存储边缘信息的图像 。图 3 仿真了当 P 取 0. 25 时图 2 所 对应的梯度二值化图像 。
111
W
=
1 9
1
1
1
(2)
111
对图像上每一点算出 l ( x , y) 后 ,代入式(1) 即可求得
g( x , y) 值 。例如 ,当取 C = 9 时 ,对应于式 (1) 的掩模为 :
-1 -1 -1
W1 = - 1 - 9 - 1
(3)
-1 -1 -1 此即为图像的一种反锐化掩模 。根据 C 的取值 ,可以计算 出不同的掩模 。
的梯度幅值应比其他位置高 。基于这一点 , 可以使用式
(9) 来产生包含最终边缘信息的二值化图像 。
| G | | G | ≥ T
e( x , y) = 0
其他
(9)
式中 T 是一个非负门限值 。适当选择 T , 可使二值化图像
e( x , y) 中只包含图像的主要轮廓和边缘的梯度幅值 。
一种合理确定 T 的方法是使用统计特性 。设已经被计
显然 , 式 (1) 中第二项的差值消除了原始图像的大部
收稿日期 :2005 11 30
90
分低频成分 ,而较完整地保留了高频部分 。因此 , 在第一项 上叠加此差值的 C 倍 , 将增强图像的高频分量 , 而低频部 分几乎不受影响 。
在实现时 , l ( x , y) 可用简单局部平均法计算 ,邻域尺 寸取 3 ×3 窗口 ,掩模为 :
将 W1 应用于图像上的每一点 ,可以方便快捷地实现 图像锐化 。但是 ,由于这种方法增强了图像整体的高频成 分 ,在突出边缘和轮廓的同时也放大了高频噪声 ,导致锐 化后的图像在非边缘区域出现明显的毛刺噪声 (见图 5) , 给观察者以失真的感觉 。这一点同时也是其他常用的整
体锐化 算 法 的 通 病 。因 此 , 有 必 要 研 究 一 种 方 法 来 改 进他 。
图 1 边缘锐化算法流程 (下转第 95 页) 91
《现代电子技术》2006 年第 12 期总第 227 期
接寻址 ;改变 SP 值之后也不能马上进行与 SP 有关的寻址 或其他操作 。 2. 5. 2 正确设置寄存器
手工汇编优化过程中要对一些寄存器设置进行修改 , 如果设置错误就会导致运行结果改变。比较常见的是对 ST1 寄 存 器 的 SXM , OVM , FRCT 位 和 PMST 寄 存 器 的 SMUL 位的设置 。
手工汇编优化的目的是提高程序的运行效率 ,而不对 算法进行修改 ,因此要保证程序运行结果不发生改变 。可 以制作一段测试序列用来监测运行结果是否正确 。构造 测试序列时要尽量涵盖各种典型情况 , 还要有足够的长 度 。如果测试序列构造不当 ,测试的时候很可能不经过某 些程序分支 ,对这部分代码的优化效果及正确性也就无从 检验了 。
针对这一点 ,考虑先使用边缘检测算法检出图像的所 有边缘信息 ,进而设定阈值判决哪些是真正的边缘 ,哪些 应被视为噪声 ,最后对认定为边缘的象素进行锐化 ,而未 认定为边缘的象素则保持原状 。
3 边缘检测 、边缘判决和二值化
边缘指的是图像中象素的值有突变的地方[2] 。常用
的边缘检测方法有一阶导数和二阶导数方法 。综合考虑 算法的效率和边缘检测的准确程度 ,选取一阶导数方法中 的 Sobel 算子作为边缘检测器 。
( 5)
Gy
=
5 f ( x , y) 5y
( 6)
梯度属于连续函数的概念 ,而数字图像是离散函数 ,
所以只能采取近似的计算方法 。考虑到一阶导数是线性
的 ,且计算方法不因象素位置而改变 ,因此 ,对 Gx 和 Gy 的 计算经常使用卷积来近似 。目前已经提出了许多种不同
的卷积算子 ,常用的有 Robert s 算子 、Prewitt 算子和 Sobel 算子[2 ] 。
Keywords :image sharpening ;unsharp masking ;edge detectio n ; Sobel operato r ;edge sharpening
数字图像经过转换和传输后 ,难免产生模糊 。图像锐 化的主要目的在于补偿图像轮廓、突出图像的边缘信息以 使图像显得更为清晰 ,从而符合人类的观察习惯 。图像锐 化的实质是增强原图像的高频分量。常规的锐化算法以此 为依据 ,对整幅图像进行高频增强。这就产生了一个问题 : 由于退化图像的高频分量既包含有效信息 ,又含有随机噪 声 ,整体锐化的做法在增强原始信息的的同时也放大了高 频噪声 ,表现为图像经过锐化后出现明显的毛刺噪声。
算了梯度的象素总数为 Sum , 给出一个百分比 P , 则梯度
幅值最高的 ( P ×Sum) 个象素是边缘 。这样 , T 可以根据 P
间接算出 。以下给出确定 T 值的 C 程序代码 :
Temp = 0 ;
EdgeSum = (unsigned lo ng) ( P 3 Sum) ;
for (i = 255 ;i > = 0 ;i - - )
( 10) 对图像上每一点 ,若 e( x , y) > 0 ,则表示该处是边缘 , 因而使用反锐化掩模对该象素进行锐化 ; 若 e( x , y) = 0 , 则表明该处不是边缘 ,不需锐化 ,该点象素值保持原状 。
5 实验结果
本实验采用分辨率为 256 ×256 的静止灰度图像 Lena (见图 2) 。主要算法在 Micro soft Visual C + + 6 . 0 开发环 境中用 C 语言实现 。算法流程的全过程如图 1 所示 。
ZEN G Jialiang
(Shantou Polytechnic College ,Shantou ,515078 ,China)
Abstract : Image sharpening is a met hod which to make t he digital image much more clearly by compensating outlines and sharpening edges of image. The aim of t his met hod is to enhance t he high f requency part of original image. No rmal sharpening algo rit hm performs high f requency enhancement for t he whole image ,t his will get a result image wit h o bvious noises. To re2 solve t his p ro blem ,base on t he understanding of t he t heory of sharpening ,p resent s a met hod to detect edges of image at first , and t hen uses t hese edges to do high f requency enhancement . Experiment s p rove t hat t his met hod can sharpen image effectively and remove t he noises at t he same time.
《现代电子技术》2006 年第 12 期总第 227 期
2 改进的思路
整体锐化之所以导致噪声放大 ,原因在于将所有象素 的高频分量不加区分地视为图像的轮廓和边缘 ,而忽略了 其中也包含噪声 。事实上 ,对于获取自现实世界的图像而 言 ,与图像总体象素数量相比 ,轮廓和边缘总是占较小的 比例 ,且其高频分量的幅值一般都比较高 。
嵌入式与单片机
3 结 语
综上所述 , C 代 码的 手 工 汇 编 优 化 , 就 是 充 分 利 用 DSP 的片内资源 ,发挥 DSP 潜在的计算能力 ,降低代码冗 余度的过程 。本文所述内容来源于对 G. 729 算法 C 语言 源代码进行的手工汇编优化工作 ,通过运用上述优化技 术 ,笔者将编码运算量从大约 900 MIPS 初步优化到了 50 MIPS以下 。虽然这些经验都是针对 TMS320C5410 芯 片总结的 ,但也同样适用于 5000 系列的其他芯片 ,对于其 他型号的 DSP 器件也有一定的借鉴意义 。
-1 0 1
-1 -2 -1
Gy = 0 0 0
( 8)
121 对图像的每一点 (上 、下 、左 、右 4 边除外) 求出 Gx 和 Gy , 然后代入式 (1) ,即可求得该点的梯度幅值 。
嵌入式与单片机
接下来的问题是判决边缘 。如前所述 ,虽然对图像上
的每一点都可以求得一个梯度幅值 ,但图像轮廓和边缘处
一阶导数方法将图像函数的梯度视为边缘 ,因此 ,基 于一阶导数的边缘检测算法实际上是通过如下公式求解
图像的梯度幅度 :
| G | = Gx 2 + Gy 2
( 4)
其中 , G为图像梯度 ; Gx 和 Gy 分别为原始图像 f ( x , y) 在 x
方向和 y 方向上的偏导数 。即 :
Gx
=
5 f ( x , y) 5x
数字化设备
曾嘉亮 :基于边缘检测的图像锐化算法
基于边缘检测的图像锐化算法
曾嘉亮
(汕头职业技术学院 广东 汕头 515078)
摘 要 :图像锐化是一种补偿轮廓 、突出边缘信息以使图像更为清晰的处理方法 ቤተ መጻሕፍቲ ባይዱ锐化的目标实质上是要增强原始图 像的高频成分 。常规的锐化算法对整幅图像进行高频增强 ,结果呈现明显噪声 。为此 ,在对锐化原理进行深入研究的基础 上 ,提出了先用边缘检测算法检出边缘 ,然后根据检出的边缘对图像进行高频增强的方法 。实验结果表明 ,该方法有效地解 决了图像锐化后的噪声问题 。
关键词 :图像锐化 ;反锐化掩模 ;边缘检测 ; Sobel 算子 ;边缘锐化 中图分类号 : TP317. 4 文献标识码 :B 文章编号 :1004 373X(2006) 12 090 02
An Image Sharpening Algorithm Based on Edge Detection
4 边缘锐化
得到 e( x , y) ,就可以用来扩充式 (1) ,从而实现数字 图像的边缘锐化 ,具体算法如式 (10) :
f ( x , y) + C[ f ( x , y) - l ( x , y) ] e( x , y) > 0
g( x , y) =
f ( x , y)
e( x , y) = 0
其中 ,SXM 是符号扩展方式位 ,OVM 是溢出方式位 , FRCT 是小数方式位 ,SMUL 是乘法饱和方式位 ,不同的设 置会导致不同的运行结果 ,但并不是所有的指令都受这些 状态位的影响 ,例如无论 SXM 为何值 ,LDM MMR ,dst 都 不进行符号扩展 ,对这样的指令要多加注意。 2. 5. 3 监测程序运行结果
本文提出了一种基于边缘检测的图像锐化方法 ,在实 现锐化的同时 ,避免了放大噪声的问题 。
1 整体锐化
相对加强高频成分的方法在空间域上较常用的是反 锐化掩模法[1] 。该方法在计算机中实现起来很方便 ,其基 本算法如下 :
g( x , y) = f ( x , y) + C[ f ( x , y) - l ( x , y) ] (1) 其中 f ( x , y) 为 原 始 图 像 ; l ( x , y) 是 用 人 为 方 法 模 糊 f ( x , y) 所得到的图像 ; C 是常数 , 用以控制图像的锐化 程度 。