大家好,关于基于matlab的边缘检测的robert算子的算法怎么写很多朋友都还不太明白,今天小编就来为大家分享关于基于matlab的数字图像边缘检测算法研究的知识,希望对各位有所帮助!
本文目录
基于matlab的边缘检测的robert算子的算法怎么写matlab中如何把边缘检测出来的图像进行直线拟合基于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;
}
matlab中如何把边缘检测出来的图像进行直线拟合用sobel,canny算子都可以提取出边缘;
提取出边缘再进行im2bw二值化,得到二值化后的0,1图像;
1的图像本质上是由离散的点构成,将离散的点的x,y坐标找出,
可以用find命令,例如[x,y]=find(I==1);
最后用cftool曲线拟合工具箱,拟合出所有的x,y的坐标点;
大致这么个思路,往这方面使劲,基本上就可以搞定.
好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!