作者yfefey (还没想到)
看板Visual_Basic
标题[.NET] sobel 程式码
时间Fri Jun 30 14:05:44 2006
取之於贵板,还之於贵板
之前在这发问了好几篇
现在程式写出来了
放上来分享
取得像素值:
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
1F:→ yfefey:= =" mask被切成2行 06/30 14:06
2F:推 linmic:(拍手鼓励)*_*/ 06/30 17:21
3F:推 melon1220:啪啪啪... 07/04 23:39