#include<stdio.h>
#include<math.h>
int Roberts(unsigned char *pnew1Data,unsigned char *pData)
{
for(int i=0;i<255;i++) //roberts!!
for(int j=0;j<255;j++)
{
pnew1Data[i*255+j]=(int)sqrt((pData[i*255+j]*(-1)+pData[i*255+j+1])*(pData[i*255+j]*(-1)+pData[i*255+j+1])+
(pData[i*255+j]*(-1)+pData[(i+1)*255+j])* (pData[i*255+j]*(-1)+pData[(i+1)*255+j]));
}
/* for(i=0;i<256*256;i++) //测试,取阈值为40
{
if(pnew1Data[i]>40)
{
pnew1Data[i]=0;
}
else pnew1Data[i]=255;
}
*/
return 0;
}
int Prewitt(unsigned char *pnew2Data,unsigned char *pData)
{
for(int i=1;i<255;i++) //prewitt!!
for(int j=1;j&
#include<math.h>
int Roberts(unsigned char *pnew1Data,unsigned char *pData)
{
for(int i=0;i<255;i++) //roberts!!
for(int j=0;j<255;j++)
{
pnew1Data[i*255+j]=(int)sqrt((pData[i*255+j]*(-1)+pData[i*255+j+1])*(pData[i*255+j]*(-1)+pData[i*255+j+1])+
(pData[i*255+j]*(-1)+pData[(i+1)*255+j])* (pData[i*255+j]*(-1)+pData[(i+1)*255+j]));
}
/* for(i=0;i<256*256;i++) //测试,取阈值为40
{
if(pnew1Data[i]>40)
{
pnew1Data[i]=0;
}
else pnew1Data[i]=255;
}
*/
return 0;
}
int Prewitt(unsigned char *pnew2Data,unsigned char *pData)
{
for(int i=1;i<255;i++) //prewitt!!
for(int j=1;j&

该博客介绍如何使用Roberts、Prewitt和Sobel边缘检测算子处理RAW格式图像。通过读取"Lena.raw"文件,将图像数据转换并应用三种算子,然后将结果保存为"roberts.raw"、"prewitt.raw"和"sobel.raw"文件。代码展示了边缘检测的实现过程。
最低0.47元/天 解锁文章
4万+

被折叠的 条评论
为什么被折叠?



