當前位置:編程學習大全網 - 網站源碼 - 基於matlab的邊緣檢測的robert算子的算法?怎麽寫?

基於matlab的邊緣檢測的robert算子的算法?怎麽寫?

matlab本身有庫函數的。直接調用啊

VC代碼:

void BianYuanJianCeDib::Robert()

{

LPBYTE p_data; //原圖數據區指針

int wide,height; //原圖長、寬

int i,j; //循環變量

int pixel[4]; //Robert算子

p_data=this->GetData ();

wide=this->GetWidth ();

height=this->GetHeight ();

LPBYTE temp=new BYTE[wide*height]; //新圖像緩沖區

//設定新圖像初值為255

memset(temp,255, wide*height);

//由於使用2*2的模板,為防止越界,所以不處理最下邊和最右邊的兩列像素

for(j=0;j<height-1;j++)

for(i=0;i<wide-1;i++)

{

//生成Robert算子

pixel[0]=p_data[j*wide+i];

pixel[1]=p_data[j*wide+i+1];

pixel[2]=p_data[(j+1)*wide+i];

pixel[3]=p_data[(j+1)*wide+i+1];

//處理當前像素

temp[j*wide+i]=(int)sqrt((pixel[0]-pixel[3])*(pixel[0]-pixel[3])

+(pixel[1]-pixel[2])*(pixel[1]-pixel[2]));

}

//將緩沖區中的數據復制到原圖數據區

memcpy(p_data, temp,wide*height);

//刪除緩沖區

delete temp;

}

  • 上一篇:像7k7k小遊戲 如何提取flash地址? 我想放個小遊戲在我qq空間裏面 可以在空間直接玩兒的
  • 下一篇:ideamavensetting可以用用git遠程的嗎
  • copyright 2024編程學習大全網