看板 C_Sharp 關於我們 聯絡資訊
為什麼我的程式跑出來的結果只是二值化的結果 我用的是error diffusion阿~~ 我有把陣列的值印出來看過 看起來都沒有錯阿 可以救救我阿~~!!!!!!!!!! 我現在要把灰階轉成半色調 用的是error diffusion這個方法 他的矩陣是 __ __ 1 | | ____ | x 7 | 16 |3 5 1 | |_ _| 步驟一:假設影像A,取127做門檻值,先選A坐左上角的PIXEL值轉換 <127的變成O,>127的變成255。 步驟二:x為步驟一所處理的pixel值A[0,0],由右到左,上到下計算。 EX: __ __ | 150 130 120| | 150 100 70| | 140 100 90| - - || 步驟一轉換成255 ˇ __ __ | 255 130 120| | 150 100 70| | 140 100 90| - - || ˇ __ __ | 255 85 120| | 117 93 70| | 140 100 90| - - 1.右邊:130+7/16(150-255)=85 2.左下:沒有 3.下面:150+5/16(150-255)=117 4.右下:100+1/16(150-255)=93 然後又從85變成0 繼續做步驟二 現在我的程式跑出來的結果是 http://www.wretch.cc/album/show.php?i=insjoy&b=9&f=1187142617&p=0 但是我要的結果應該類似於 http://www.wretch.cc/album/show.php?i=insjoy&b=9&f=1187142618&p=1 這樣~"~!! 我的程式碼為 Bitmap binarybmp =(Bitmap)pictureBox1.Image; int[] arr = new int[binarybmp.Height * binarybmp.Width];//存每個pixel顏色 int[,] a = new int[binarybmp.Height , binarybmp.Width]; int[,] b = new int[binarybmp.Height , binarybmp.Width]; int qerror = 0; for (int i = 0; i < binarybmp.Height; i++) { for (int j = 0; j < binarybmp.Width; j++) { a[i, j] = binarybmp.GetPixel(j, i).R; if (a[i,j] < 127) { b[i, j] = 0; } else { b[i, j] = 255; } qerror = a[i,j] - b[i,j]; if (j < (binarybmp.Width-1)) { a[i,j+1] = ((int)(7 / 16) * qerror + a[i,j+1]); } if (i< (binarybmp.Height-1) && j>= 1) { a[i + 1, j - 1] = a[i + 1, j - 1] + (int)(3 / 16 * qerror); a[i + 1, j] = a[i + 1, j] + (int)(5 / 16 * qerror); } if (j < (binarybmp.Width-1) && i< (binarybmp.Height-1)) { a[i+1,j+1] = a[i+1,j+1] + (int)(1 / 16 * qerror); } if (b[i, j] == 255) { binarybmp.SetPixel(j, i, Color.White); } else { binarybmp.SetPixel(j, i, Color.Black); } } } pictureBox1.Image = binarybmp; } 拜託教我一下阿>"< 謝謝~!!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.132.194.189
toki:改成 ((int)((7.0 / 16.0) * qerror + a[i,j+1])); 10/02 08:33
toki:試試看,另外影像處理要注意 <0 和 >255 的檢查 10/02 08:33
toki:少一行,有除法的地方請檢查, 7/16 用int算會直接變 0 10/02 08:34
insjoy:我改了~然後有output出數值來~真的跟原本的數值不一樣.. 10/02 09:34
insjoy:原本的真的變零!!!!XD"..可是改完以後..輸出還是一樣..沒 10/02 09:35
insjoy:有變......Orz........ 10/02 09:35
insjoy:所以最主要的問題應該不是在這裡耶....:'( 10/02 09:35
insjoy:還有那個..你說少一行..是哪裡少阿@@?! 10/02 09:42