close

機率分布統計取得函數
x軸 設定取樣範圍是0~255 間距為1
y軸 機率值 0~1


'-------------------------------------------
Public Function getprob() As Single()

Dim op1 As New OpenFileDialog

'-------選取來源檔視窗-------------------
op1.Filter = ".raw|*.*"
Dim path As String

If op1.ShowDialog() = Windows.Forms.DialogResult.OK Then
path = op1.FileName

End If


Dim pic As New Bitmap(path) '讀圖 (檔案路徑 :Debug 目錄下 )
' Dim pic As New Bitmap("test.bmp") '讀圖 (檔案路徑 :Debug 目錄下 )
' Dim pic As New Bitmap("test.jpg") '讀圖 (檔案路徑 :Debug 目錄下 ) 任何圖片格式都可以讀成Bitmap 物件

Dim x As Integer = pic.Width '取得原圖寬度
Dim y As Integer = pic.Height '取得原圖長度
Dim pic2 As New Bitmap(x, y) '產生新圖 設定大小跟原圖一樣大

Dim colorG As Double
'-------/選取來源檔視窗/-------------------


'-------灰階運算--------------

' Dim pixelcolor As Color '測試用
' pixelcolor = pic.GetPixel(1, 1) ' 可以發現1個 Pixel 點 包含了(R,G,B)

Dim colorG_int_array(x - 1, y - 1) As UInt16
Dim histogram(255) As Long '灰度值分布數量統計
' Dim probility_G(255) As Single '灰度值機率分布

For j = 0 To y - 1
For i = 0 To x - 1
colorG = 0.299 * pic.GetPixel(i, j).R + 0.587 * pic.GetPixel(i, j).G + 0.114 * pic.GetPixel(i, j).B
Dim pointG = colorG - CInt(colorG) '四捨五入運算
If pointG > 0.5 Then
colorG = CInt(colorG) + 1
Else
colorG = CInt(colorG)
End If

colorG_int_array(i, j) = colorG
'--------------在出現的灰值上累計數量------------
For n = 0 To 255
If colorG = n Then
histogram(n) = histogram(n) + 1
End If
Next
'-------------/在出現的灰值上累計數量/--------------
Next
Next



'-------/灰階運算/--------------


'----------灰度機率統計--------------------------------------
Dim CDF_G(255) As Single

'Dim sum_p As Single = 0
Dim probility_G(255) As Single
For i = 0 To 255
probility_G(i) = histogram(i) / (x * y)
' sum_p = sum_p + probility_G(i)


'----------灰度CDF-------------
If i = 0 Then

CDF_G(i) = probility_G(i)
Else
CDF_G(i) = CDF_G(i - 1) + probility_G(i)

End If
'----------/灰度CDF/-----------------

Next

'----------灰度機率統計-----------------------------------------


Return probility_G
End Function

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 prague12 的頭像
    prague12

    prague12

    prague12 發表在 痞客邦 留言(0) 人氣()