|||
Visual Basic与图像处理(二)
7、灰度窗口变换
灰度窗口变换是选择窗口中部分灰度等级的一种点运算方式,其实现方法与阈值变换类似。选择一定的灰度等级范围,在该范围内的灰度值保持不变,小于该范围下限的灰度值设置为0(黑色),而大于该范围上限的灰度值设置为255(白色)。灰度窗口变换可以用下面的函数形式进行表达:
这里的L表示窗口范围的下限,H表示窗口范围的上限。
灰度窗口变换的在平时用途较为广泛,比如利用灰度窗口变换可以消除较暗或者较亮的背景,在软件设计时,该例与阈值变换非常相似,同样由两个PictureBox组成,另外在窗口中放置了两个文本框,分别用于存放窗口范围的下限和上限。本例的运行界面如下图所示:
窗口变换按钮对应的代码如下:
Private Sub cmdWindowTrans_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 NGrayValue As Integer
Dim L As Integer, H As Integer
ThresholdValue = Val(txtThreshold)
'设置目标图像的高度和宽度
DestImHeight = SourceImHeight
DestImWidth = SourceImWidth
'设置目标PictureBox的大小
PicDest.Height = DestImHeight
PicDest.Width = DestImWidth
L = Val(txtL)
H = Val(txtH)
'图像的窗口变换
For i = 0 To SourceImHeight - 1
For j = 0 To SourceImWidth - 1
PixelValue = PicSource.Point(j, i)
r = PixelValue Mod 256
g = (PixelValue 256) Mod 256
b = PixelValue 65536
'插入图像处理的过程,对r, g, b进行处理
GrayValue = 0.3 * r + 0.59 * g + 0.11 * b
If GrayValue < L Then
NGrayValue = 0
ElseIf GrayValue > H Then
NGrayValue = 255
Else
NGrayValue = GrayValue
End If
PicDest.PSet (j, i), RGB(NGrayValue, NGrayValue, NGrayValue)
Next j
Next i
End Sub
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-5-19 01:39
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社