图 6-3 横向微分运算
2.3 双方向一次微分运算
1.理论基础
对灰度图像 f 在纵方向和横方向两个方向进行微分。该算法是同时增强水平和垂直方
向的边缘。该算法的数学表达式为:
G(i,j)=sqrt{[f(i,j)-f(i,j-1)]*[f(i,j)-f(i,j-1)]+[f(i,j)-f(i-1,j)]* [f(i,j)-f(i-1,j)]} (6-8)
对于含小数的 G ( i , j )可四舍五入。
该算法用如下卷积核:
水平(i 方向) 垂直(j 方向)
使用水平方向卷积核得出像素值为 m,使用垂直方向卷积核得出像素值为 n,该像素边
界强度为:sqrt[(m×m)+(n×n)]。该算法是同时增强水平和垂直方向的边缘。
2.实现步骤
(1)取得原图的数据区指针。
(2)开辟一块内存缓冲区,并初始化为 255。
(3)每个像素依次循环,原图中当前像素的灰度值与其左方的像素的灰度值之差
的绝对值的平方,再加上当前像素的灰度值与其上方的像素的灰度值之差的绝对值的平方,
所得的平方根即为新图像当前像素的灰度值。
(4)缓冲区中的图像复制回原图数据区。
3.程序代码
/**************************************************************
*函数名称:ShuangXiang()
*函数类型:void
*功能:对图像进行双向一次微分
**************************************************************/
void WeiFenDib::ShuangXiang()
{
LPBYTE p_data; //原图数据区指针