[Visual Basic 6.0] 影像處理 利用灰階公式將影像轉換為灰階化 (或使用特殊法)

摘要:[Visual Basic 6.0] 影像處理 利用灰階公式將影像轉換為灰階化 (或使用特殊法)

[Visual Basic 6.0] 影像處理 利用灰階公式將影像轉換為灰階化 (或使用特殊法)

 

正常的狀況下,我們通常都會先求出某一點的 RGB 值,並且套用灰階公式:

0.299*R+ 0.587*G + 0.114*B
'# [Visual Basic 6.0] 影像處理 利用灰階公式將影像轉換為灰階化
'# 0xDe

' 灰階公式 0.299*R+ 0.587*G + 0.114*B
Private Sub ChangePicture_Click()
    For I = 1 To 5000 Step 15
        For J = 1 To 5000 Step 15
            T = InputPicture.Point(I, J) ' 取出 I,J 點的 Point 值
            R = T Mod 256 ' 第一次 除以 256 得到的餘數為 點的 R 值
            T = T / 256
            G = T Mod 256 ' 第二次 除以 256 得到的餘數為 點的 G 值
            T = T / 256
            B = T Mod 256 ' 第三次 除以 256 得到的餘數為 點的 B 值
            T = 0.299 * R + 0.587 * G + 0.114 * B ' 套用公式
            OutputPicture.PSet (I, J), RGB(T, T, T) ' 繪出灰階化
        Next J
    Next I
End Sub

 

其實也可以將公式化為:

(R+G+B) / 3

效果:

 

'# [Visual Basic 6.0] 影像處理 利用灰階公式將影像轉換為灰階化
'# 0xDe

' 灰階公式 0.299*R+ 0.587*G + 0.114*B
Private Sub ChangePicture_Click()
    For I = 1 To 5000 Step 15
        For J = 1 To 5000 Step 15
            T = InputPicture.Point(I, J) ' 取出 I,J 點的 Point 值
            R = T Mod 256 ' 第一次 除以 256 得到的餘數為 點的 R 值
            T = T / 256
            G = T Mod 256 ' 第二次 除以 256 得到的餘數為 點的 G 值
            T = T / 256
            B = T Mod 256 ' 第三次 除以 256 得到的餘數為 點的 B 值
            T = (R + G + B) / 3 ' 特殊解
            OutputPicture.PSet (I, J), RGB(T, T, T) ' 繪出灰階化
        Next J
    Next I
End Sub

 

我們來比較一下:

 

這是使用公式的灰階結果:

這是使用 (R+G+B) / 3 的灰階結果:

 

個人比較看下,基本上是沒有什麼差距,如果忘了公式,不仿可以使用 (R+G+B) / 3 平均值 ^^

 

[Visual Basic 6.0] 影像處理 利用灰階公式將影像轉換為灰階化.rar

#0xDe 從分享中學習

#Facebook:ProgrammerDe (https://www.facebook.com/MicrosoftDes) 有問題歡迎提問