Skip to main content

Dilation (增长) (VB 6.0)

Dilation (增长) (VB 6.0)


介绍

增长就是当周边有任一点为黑点时,该点则为黑点。思考一下,当有一个点,存在于矩阵中,当开始以3×3屏蔽扫描时,该点的四周都会被包含在屏蔽中,因此该点的四周也都设定为黑点。这样看起来就会变成大了,因此以增长为名。在这里所谓称为邻居,解释为方向之意。八邻居也就是该点的八个方向(左上、上、右上、左、原点、右、左下、下、右下);四邻居就是四个方向(上、下、左、右)。
八邻居增长的计算公式如下:

四邻居增长的计算公式如下:


用法



设定所有变量必须宣告才能使用
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
    巡览picture1Y
    For lngY = 0 To Picture1.ScaleHeight
        巡览picture1X
        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 = Abs(intA + intB + intC + intD + intE + intF + intG + intH + intI)
            倘若大于零,则代表周围像素有一个为黑色
            If intS > 0 Then
               设定结果像素变量为黑色
               intS = 0
            反之则代表周围像素没有黑色
            Else
               设定结果像素变量为白色
               intS = 255
            结束If判断
            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.

致谢

感谢 (维基自由百科) 提供的知识。



Popular posts from this blog

Python 日期與時間的處理

Visual Basic 6.0 (VB6) 程式語言案例學習 (10. 條碼列印程式)

寫作:波蘭文學習之旅:1-1. 波蘭文字母與發音(注音版)

Python 日期與時間的處理

Image

Visual Basic 6.0 (VB6) 程式語言案例學習 (10. 條碼列印程式)

Image

寫作:波蘭文學習之旅:1-1. 波蘭文字母與發音(注音版)

Image

數位影像處理:最佳化處理策略之快速消除扭曲演算法

Image

Visual Basic 6.0 (VB6) 程式語言案例學習 (04. 人事考勤管理系統)

Image

用10種程式語言做影像二值化(Image binarization)

Visual Basic 6.0 (VB6) 程式語言案例學習 (07. 收據列印程式)

Image

Visual Basic .Net (VB.Net) 程式語言案例學習 (03. 場地預約系統)

Image

Visual Basic 6.0 (VB6) 程式語言案例學習 (11. 生產線拍照程式)

Image

Visual Basic .Net (VB.Net) 程式語言案例學習 (06. 題庫測驗系統)

Image