||
Visual Basic与图像处理(三)
9、Laplacian微分算子
前面讲的几种都是一阶微分算子,本节开始讲的是二阶微分算子,从理论上来说二阶微分算子比一阶微分算子更为敏感,因此能够提取到更多的细节信息。二阶微分算子中最常用也最简单的就是拉普拉斯(Laplacian)微分算子,可以用下面的公式进行表示:
上式也可以写成平时常见的模板形式:
本例的运行界面如下:
Laplacian滤波按钮对应的代码如下:
Private Sub cmdLaplacianFilter_Click()
Dim i As Integer, j As Integer
Dim PixelValue As Long
Dim r As Integer, g As Integer, b As Integer
Dim GrayValue As Integer
Dim Temp(2, 2) As Integer
Dim x As Integer, y As Integer
Dim Dx As Integer, Dy As Integer
Dim NGrayValue As Integer
'设置目标图像的高度和宽度
DestImHeight = SourceImHeight - 2 '边界像素直接不要了
DestImWidth = SourceImWidth - 2
'设置目标PictureBox的大小
PicDest.Height = DestImHeight
PicDest.Width = DestImWidth
ReDim dbits(DestImHeight - 1, DestImWidth - 1, 2) As Byte '重新定义目标数组的维数
dbits = sbits '数组的直接复制,只有数组维数完全一样才可以
'图像的Laplacian滤波
For i = 1 To SourceImHeight - 2 '边界像素不处理
For j = 1 To SourceImWidth - 2
NGrayValue = 0
For x = 0 To 2
For y = 0 To 2
r = sbits(i + 1 - x, j + 1 - y, 0)
g = sbits(i + 1 - x, j + 1 - y, 1)
b = sbits(i + 1 - x, j + 1 - y, 2)
'插入图像处理的过程,对r, g, b进行处理
Temp(x, y) = 0.3 * r + 0.59 * g + 0.11 * b
Next y
Next x
NGrayValue = Abs(4 * Temp(1, 1) - Temp(0, 1) - Temp(1, 0) - Temp(1, 2) - Temp(2, 1))
If NGrayValue > 255 Then NGrayValue = 255
dbits(i - 1, j - 1, 0) = NGrayValue
dbits(i - 1, j - 1, 1) = NGrayValue
dbits(i - 1, j - 1, 2) = NGrayValue
Next j
Next i
Dim tDBmpInfo As BITMAP
Dim hDestBmp As Long
hDestBmp = PicDest.Image.Handle
'获得位图信息
Call GetObject(hDestBmp, Len(tDBmpInfo), tDBmpInfo)
ReDim ImageArray(1 To DestImWidth * 4, 1 To DestImHeight) As Byte
For i = 1 To DestImHeight
For j = 1 To DestImWidth
ImageArray((j - 1) * 4 + 1, i) = dbits(i - 1, j - 1, 2)
ImageArray((j - 1) * 4 + 2, i) = dbits(i - 1, j - 1, 1)
ImageArray((j - 1) * 4 + 3, i) = dbits(i - 1, j - 1, 0)
Next j
Next i
'获得源图与目标图二进制位
Call SetBitmapBits(hDestBmp, tDBmpInfo.bmWidthBytes * tDBmpInfo.bmHeight, ImageArray(1, 1))
End Sub
拉普拉斯算子还有许多变形形式,这里给出几种常用的变式:
由于拉普拉斯是一种微分算子,它的作用强调图像中的灰度等级的突变,在实际应用中可以将锐化结果叠加到原始图像中,这样既可以保护拉普拉斯锐化处理的效果,同时也能复原原始背景信息,用运算模板的形式表示如下:
这是的运行界面如下:
对比原图可以看出,经过这种方法强化的图像中,细节信息更为明显,上述织物图像表面纹理要比原图清晰得多。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-4-30 21:41
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社