Erosion (侵蚀) (VB 6.0)
Erosion (侵蚀) (VB 6.0)
介绍
八邻居侵蚀的计算方式如下:
四邻居侵蚀的计算方式如下:
用法
‘设定所有变量必须宣告才能使用
Option
Explicit
‘窗体起始加载事件
Private Sub
Form_Load()
‘picture1加载影像
Picture1.Picture = LoadPicture(App.Path
& "\Lai, Tai-Yu.bmp")
‘宣告巡览X轴变量
Dim lngX As Long
‘宣告巡览Y轴变量
Dim lngY As Long
‘宣告结果像素变量
Dim intS
‘宣告矩阵第一列变量
Dim intA, intB, intC
‘宣告矩阵第二列变量
Dim intD, intE, intF
‘宣告矩阵第三列变量
Dim intG, intH, intI
‘设定picture1控件采用像素为单位
Picture1.ScaleMode = 3
‘使picture1控件的自动重绘有效
Picture1.AutoRedraw = True
‘设定picture2控件采用像素为单位
Picture2.ScaleMode = 3
‘使picture2控件的自动重绘有效
Picture2.AutoRedraw = True
‘巡览picture1的Y轴
For lngY = 0 To Picture1.ScaleHeight
‘巡览picture1的X轴
For lngX = 0 To Picture1.ScaleWidth
‘让计算机有多余时间处理其他事件
DoEvents
‘像素值减去255,是代表当遇到白色的时候,回传值为零
‘反之若遇到黑色则为-255
intA = (Picture1.Point(lngX - 1,
lngY - 1) And &HFF) - 255
intB = (Picture1.Point(lngX, lngY -
1) And &HFF) - 255
intC = (Picture1.Point(lngX + 1,
lngY - 1) And &HFF) - 255
intD = (Picture1.Point(lngX - 1,
lngY) And &HFF) - 255
intE = (Picture1.Point(lngX, lngY)
And &HFF) - 255
intF = (Picture1.Point(lngX + 1,
lngY) And &HFF) - 255
intG = (Picture1.Point(lngX - 1,
lngY + 1) And &HFF) - 255
intH = (Picture1.Point(lngX, lngY +
1) And &HFF) - 255
intI = (Picture1.Point(lngX + 1, lngY
+ 1) And &HFF) – 255
'当结果像素等于零时,则设定为白色;反之则设定为黑色
intS = intA And intB And intC And intD
And intF And intG And intH And intI
If intS = 0 Then
intS = 255
Else
intS = 0
End If
‘依据结果像素变量,设定picture2的颜色
Picture2.PSet (lngX, lngY),
RGB(intS, intS, intS)
‘跳回X轴循环下一次
Next lngX
‘跳回Y轴循环下一次
Next lngY
‘结束事件子程序
End Sub
下载原始档及执行档:
例外
1. 如果执行档不能执行,请先安装vbrun60sp6.exe。
参考
[2] Kuo-Jen,
Lien, Digital Image Processing, ISBN: 9789574998333, Scholars Books Co., Ltd.
致谢
感谢 (维基自由百科, Kuo-Jen, Lien)
提供的知识。