作者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
1F:推 willy01:谢谢~原来我错那边.....我知道自己的问题哩 12/22 11:05
2F:→ willy01:真的很谢谢大大 因为我为了这个想了两天哩.... 感恩 12/22 11:06
3F:推 makiyolove:经验:值可能超过255 也可能小於0 记得调整这个 12/22 15:07
4F:推 willy01:做sobel不会超值 因为是梯形能阶的说 12/23 00:29