[.NET] sobel 程式碼

看板Visual_Basic作者 (還沒想到)時間19年前 (2006/06/30 13:58), 編輯推噓2(201)
留言3則, 3人參與, 最新討論串1/1
取之於貴板,還之於貴板 之前在這發問了好幾篇 現在程式寫出來了 放上來分享 取得像素值: 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
= =" mask被切成2行
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
文章代碼(AID): #14fBrhZm (Visual_Basic)
文章代碼(AID): #14fBrhZm (Visual_Basic)