Robert運算元

Roberts邊緣檢測運算元是一種利用局部差分運算元尋找邊緣的運算元,Robert運算元圖像處理後結果邊緣不是很平滑。

Roberts邊緣檢測運算元是一種利用局部差分運算元尋找邊緣的運算元,Robert運算元圖像處理後結果邊緣不是很平滑。經分析,由於Robert運算元通常會在圖像邊緣附近的區域內 產生較寬的回響,故採用上述運算元檢測的邊緣圖像常需做細化處理,邊緣定位的精度不是很高。

.NET代碼如下:

private void menuItem23_Click(object sender, System.EventArgs e)

{

if(this.pictureBox1.Image!=null)

{

this.pictureBox2.Visible=true;

int height=this.pictureBox1.Image.Height;

int width=this.pictureBox1.Image.Width;

Bitmap temp=new Bitmap(width,height);

Bitmap process=(Bitmap)this.pictureBox1.Image;

int i,j,p0,p1,p2,p3;

Color [] pixel=new Color[4];

int result;

for(j=height-2;j>0;j--)

{

for(i=0;i<width-2;i++)

{

pixel[0]=process.GetPixel(i,j);

pixel[1]=process.GetPixel(i,j+1);

pixel[2]=process.GetPixel(i+1,j);

pixel[3]=process.GetPixel(i+1,j+1);

p0=(int)(0.3*pixel[0].R+0.59*pixel[0].G+0.11*pixel[0].B);

p1=(int)(0.3*pixel[1].R+0.59*pixel[1].G+0.11*pixel[1].B);

p2=(int)(0.3*pixel[2].R+0.59*pixel[2].G+0.11*pixel[2].B);

p3=(int)(0.3*pixel[3].R+0.59*pixel[3].G+0.11*pixel[3].B);

result=(int)Math.Sqrt((p0-p3)*(p0-p3)+(p1-p2)*(p1-p2));

if (result>255)

result=255;

if (result<0)

result=0;

temp.SetPixel(i,j,Color.FromArgb(result,result,result));

}

}

this.pictureBox2.Image=temp;

}

}

相關詞條

相關搜尋

熱門詞條

聯絡我們