600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > C语言实现harris角点检测

C语言实现harris角点检测

时间:2023-12-30 08:49:44

相关推荐

C语言实现harris角点检测

纯C语言实现harris角点检测,代码忽略高斯滤波部分

int sobel_kernel_x[9]={-1,0,1,-2,0,2,-1,0,1};int sobel_kernel_y[9]={1,2,1,0,0,0,-1,-2,-1};extern uchar sobel_res_x[1000*1000];extern uchar sobel_res_y[1000*1000];uchar xx[1000*1000];uchar yy[1000*1000];uchar xy[1000*1000];void sobel_x(const imginfo img,uchar* res,int thread){int width=img.width;int height=img.height;uchar* arr=(uchar *)malloc(sizeof(uchar)*width*height);memcpy(arr,img.img, (sizeof(uchar)*width*height));// res=(uchar *)malloc(sizeof(uchar)*width*height);int i=0,j=0;int sum=0;for(i=3;i<width-3 ;i++){for(j=3;j<height-3;j++){sum=0;sum =*(arr+i-1+(j-1)*width)*sobel_kernel_x[0]+*(arr+i +(j-1)*width)*sobel_kernel_x[1]+*(arr+i+1+(j-1)*width)*sobel_kernel_x[2]+*(arr+i-1+(j)*width)*sobel_kernel_x[3]+*(arr+i +(j )*width)*sobel_kernel_x[4]+*(arr+i+1+(j)*width)*sobel_kernel_x[5]+*(arr+i-1+(j+1)*width)*sobel_kernel_x[6]+*(arr+i+(j+1)*width)*sobel_kernel_x[7]+*(arr+i+1+(j+1)*width)*sobel_kernel_x[8];sum=sum>255?255:sum;sum=sum<thread?0:sum;*(res+i+(j)*width)=sum;}}}void sobel_y(const imginfo img,uchar* res,int thread){int width=img.width;int height=img.height;uchar* arr=(uchar *)malloc(sizeof(uchar)*width*height);memcpy(arr,img.img, (sizeof(uchar)*width*height));memset(res,0, (sizeof(uchar)*width*height));int i=0,j=0;int sum=0;for(i=3;i<width-3 ;i++){for(j=3;j<height-3;j++){sum=0;sum =*(arr+i-1+(j-1)*width)*sobel_kernel_y[0]+*(arr+i +(j-1)*width)*sobel_kernel_y[1]+*(arr+i+1+(j-1)*width)*sobel_kernel_y[2]+*(arr+i-1+(j)*width)*sobel_kernel_y[3]+*(arr+i +(j )*width)*sobel_kernel_y[4]+*(arr+i+1+(j)*width)*sobel_kernel_y[5]+*(arr+i-1+(j+1)*width)*sobel_kernel_y[6]+*(arr+i+(j+1)*width)*sobel_kernel_y[7]+*(arr+i+1+(j+1)*width)*sobel_kernel_y[8];sum=sum>255?255:sum;sum=sum<thread?0:sum;*(res+i+(j)*width)=sum;}}}void harris(const imginfo img,uchar* res,int thread,int k){sobel_y(img,sobel_res_y,10);sobel_x(img,sobel_res_x,10);double rr=0;int i=0,j=0;int width=img.width;int height=img.height;memcpy(res,img.img,sizeof(uchar)*width*height);uchar tmp[1000*1000]={0};long g_Ix=0,g_Iy=0,g_Ixy=0;long a=0,b=0,c=0;for(i=0;i<width;i++){for(j=0;j<height;j++){g_Ix=sobel_point_x(i,j,width) ;g_Iy=sobel_point_y(i,j,width) ;a= g_Ix>255?255:g_Ix;b= g_Iy>255?255:g_Iy;rr=double(a*a*b*b-k*(a*b+a*b));*(xx+i+j*width)=a;*(yy+i+j*width)=b;rr=rr/10000000;if(rr>thread ){printf("rr=%f \r\n",rr);}if(rr>thread ){*(res+i+j*width)=255;*(res+i+1+j*width)=255;*(res+i+(j+1)*width)=255;*(res+i+(j-1)*width)=255;*(res+i-1+j*width)=255;}}}}

原始图片

sobel_X sobel_Y

harris结果

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。