作者oooandooo (nelson)
看板C_Sharp
標題Re: [問題] 圖片sobel
時間Tue Dec 22 09:22:04 2009
※ 引述《willy01 (汪洋中的一條狗)》之銘言:
: 這個
: 我打sobel出點問題
: 但我確定我遮罩應該沒問題
: 我做出的圖:http://www.wretch.cc/album/album.php?id=willydog029&book=5&page=1
: 做出的圖 和正確的sobel出入很多
: 希望有大大幫我看一下code
: ============================================================================
: private void 邊線邊緣sobelToolStripMenuItem_Click(object sender, EventArgs e)
: {
: //定義變數 陣列
: Bitmap sobel = new Bitmap(curBitmap);
: int [,] arr_r;
: int [,] arr_g;
: int [,] arr_b;
: byte[,] temp_array;
: arr_r = new int[sobel.Width, sobel.Height];
: arr_g = new int[sobel.Width, sobel.Height];
: arr_b = new int[sobel.Width, sobel.Height];
: temp_array=new byte[sobel.Width, sobel.Height];
: //計算Gx 和Gy
: double x;
: double y;
: double grad;
for (int i = 1; i < (sobel.Width - 1); i++)
{
for (int j = 1; j < (sobel.Height - 1); j++)
{
arr_r[i, j] = curBitmap.GetPixel(i, j).R;
arr_g[i, j] = curBitmap.GetPixel(i, j).G;
arr_b[i, j] = curBitmap.GetPixel(i, j).B;
//先灰階化
arr_r[i, j] = (arr_r[i, j] + arr_g[i, j] + arr_b[i, j]) / 3;
}
}
: for (int i = 1; i < (sobel.Width-1); i++)
: {
: for (int j = 1; j < (sobel.Height-1); j++)
: {
: //sobel的Gx能階
: //1 0 -1
: //2 0 -2
: //1 0 -1
: x=System.Math.Abs(1*arr_r[i-1,j-1]+2*arr_r[i-1,j] + 1*arr_r[i-1,j+1]
: - arr_r[i+1, j-1] - 2 * arr_r[i+1, j] - arr_r[i + 1, j + 1]);
: //sobel的Gy
: //1 2 1
: //0 0 0
: //-1 -2 -1
: y=System.Math.Abs(1*arr_r[i-1,j-1]+2*arr_r[i,j-1]+1*arr_r[i+1,j-1]
: -1*arr_r[i-1,j+1]-2*arr_r[i,j+1]-1*arr_r[i+1,j+1]);
: grad = System.Math.Sqrt(x*x+y*y);
: temp_array[i, j] =(byte)(grad);
: sobel.SetPixel(i,j,Color.FromArgb(temp_array[i, j],temp_array[i, j],
: temp_array[i,j]));
: }
: }
: }
: =============================================================================
: 希望有大大可以幫我看一下code
: 我知道看別人code很累~~所以我是有先查過資料的
: 還有我想應該不是沒做2值化才不一樣
: 希望有大大可幫忙修CODE
: 真的希望可以學好程式......THX
改這樣看看,我看是ok的
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.133.8.64
推 willy01:謝謝~原來我錯那邊.....我知道自己的問題哩 12/22 11:05
→ willy01:真的很謝謝大大 因為我為了這個想了兩天哩.... 感恩 12/22 11:06
推 makiyolove:經驗:值可能超過255 也可能小於0 記得調整這個 12/22 15:07
推 willy01:做sobel不會超值 因為是梯形能階的說 12/23 00:29