灰度图像--图像分割 Scharr算子
来源:互联网 发布:易语言php网络验证 编辑:程序博客网 时间:2024/05/16 08:07
学习DIP第46天
转载请标明本文出处:http://blog.csdn.net/tonyshengtan ,出于尊重文章作者的劳动,转载请标明出处!文章代码已托管,欢迎共同开发: https://github.com/Tony-Tan/DIPpro
开篇废话
感受下markdown的写博客的感觉,好像在写程序一样,果然是程序员的好工具,不过开头怎么没有空格。。。一空格就自动变成代码了,这让我情何以堪,好吧,以后的文章开头不空格了。本来打算上一篇直接介绍Scharr算子,但是发现Prewitt也能占很大篇幅,为了保证每一篇的内容不过长,所以拆了一篇出来,下一篇写Sobel,Prewitt,Scharr的对比。
Scharr算子介绍
果然没有空格,好吧,不空格就不空格吧,OpenCV的Canny算法介绍中提到了Scharr算子,并且说
与Sobel的不同点也是在平滑部分,这里所用的平滑算子是
代码
double Scharr(double *src,double *dst,double *edgedriction,int width,int height){ double ScharrMask1[3]={0.1875,0.625,0.1875}; double ScharrMask2[3]={1,0,-1}; double *dst_x=(double *)malloc(sizeof(double)*width*height); double *dst_y=(double *)malloc(sizeof(double)*width*height); RealConvolution(src, dst_x, ScharrMask1, width, height, 1, 3); RealConvolution(dst_x, dst_x, ScharrMask2, width, height, 3, 1); RealConvolution(src, dst_y, ScharrMask2, width, height, 1, 3); RealConvolution(dst_y, dst_y, ScharrMask1, width, height, 3, 1); for(int i=0;i<width*height;i++) dst_y[i]=-dst_y[i]; if(edgedriction!=NULL) getEdgeAngle(dst_x, dst_y, edgedriction, width, height); for(int j=0;j<height;j++) for(int i=0;i<width;i++){ dst[j*width+i]=abs(dst_x[j*width+i])+abs(dst_y[j*width+i]); } free(dst_x); free(dst_y); //matrixMultreal(dst, dst, 1.0/16.0, width, height); return findMatrixMax(dst,width,height);}
效果
原图:
scharr算子结果:
按顺序局部放大:
注意7中具有细小噪声点,放大后观察:
阈值处理后:
总结
Scharr作为一阶微分算子,与其他微分算子具有相同的基本特点,即对突变有较强的响应,但缺点也是使用Scharr后处理时,阈值无法很好的分离边缘候选点中边缘点与非边缘点,其优点是速度极快,而且Scharr大小固定,也就是只有
3 0
- 灰度图像--图像分割 Scharr算子
- 灰度图像--图像分割 Sobel算子,Prewitt算子和Scharr算子平滑能力比较
- 灰度图像--图像分割 Robert算子
- 灰度图像--图像分割 Sobel算子
- 灰度图像--图像分割 Prewitt算子
- 灰度图像--图像分割 Marr-Hildreth算子(LoG算子)
- 灰度图像--图像分割 边缘检测算子 综述
- 图像灰度分割
- 灰度图像--图像增强 拉普拉斯算子
- 灰度图像--图像增强 Robert算子、Sobel算子
- 灰度图像--图像增强 Robert算子、Sobel算子
- 关于图像分割算子dyn_threshold
- 灰度图像--图像分割 综合介绍
- 灰度图像--图像分割 边缘模型
- 灰度图像--图像分割 Canny边缘检测
- 灰度图像--图像分割 阈值处理综述
- Halcon 算子 使用灰度获得图像区域
- 灰度图像--图像分割 区域分割之区域生长
- FCKeditor html 文本编辑器的配置应用
- 即时通讯 音视频 开发技术
- 好记性不如烂笔头50-javaWeb框架struts2中的方法拦截器(5)
- 个人总结之类 Arrays类的常用方法
- hdu 5024 枚举
- 灰度图像--图像分割 Scharr算子
- Hash练习题:【HDOJ4821】--String【字符串hash】
- char*互相转换wchar_t*
- java验证iap支付收据
- ArrayList的实现原理
- 近期内容补漏
- LeetCode 24.Swap Nodes in Pairs
- 我的有效学习-----WPF学习初步
- jquery中bind函数绑定多个事件