[.NET] sobel 程式碼
取之於貴板,還之於貴板
之前在這發問了好幾篇
現在程式寫出來了
放上來分享
取得像素值:
pic = Me.PictureBox1.Image
j = pic.Height
i = pic.Width
ReDim list(i, j)
For x = 1 To i - 1 '最邊緣那排不管
For y = 1 To j - 1
r = pic.GetPixel(x, y).R '這是在(x, y)位置上的R值
g = pic.GetPixel(x, y).G '這是在(x, y)位置上的G值
b = pic.GetPixel(x, y).B '這是在(x, y)位置上的B值
list(x, y) = 0.3 * r + 0.59 * g + 0.11 * b '轉成灰階
Next
Next
sobel並setpixel:
pic2 = New Bitmap(i, j)
For x = 1 To i - 1
For y = 1 To j - 1
mask1 = list(x - 1, y + 1) + list(x + 1, y + 1) - list(x - 1, y - 1) - list(x + 1, y - 1) + 2 * (list(x, y + 1) - list(x, y - 1))
mask2 = list(x + 1, y - 1) + list(x + 1, y + 1) - list(x - 1, y - 1) - list(x - 1, y + 1) + 2 * (list(x + 1, y) - list(x - 1, y))
If mask1 > 255 Then mask1 = 255
If mask2 > 255 Then mask2 = 255
If mask1 < 0 Then mask1 = 0
If mask2 < 0 Then mask2 = 0 '讓mask的值在0~255之間
sum = mask1 + mask2
If sum > 40 Then
sum = 0
Else : sum = 255 '設門檻值40
End If
usecolor = Color.FromArgb(sum, sum, sum)
pic2.SetPixel(x, y, usecolor)
Next
Next
完整程式在此
http://kuso.cc/00ay
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.162.90.237
→
06/30 14:06, , 1F
06/30 14:06, 1F
推
06/30 17:21, , 2F
06/30 17:21, 2F
推
07/04 23:39, , 3F
07/04 23:39, 3F
Visual_Basic 近期熱門文章
PTT數位生活區 即時熱門文章