+CIMG+彩色图片边缘提取实验记录_canny/hough transfrom
前言:
书到用时方恨少
正文:
边缘提取技术一直都有接触,最通用的莫过于拉普拉斯,sobel几个算子,两个算子都可通过简单的模板运算进行,而现在比较好的一个边缘提取技术是canny,文章中我是用的canny函数参考:https://github.com/azikk/canny-with-CImg 不再另加描述。
需要注意的是↑这个算法计算过后的边缘特征图片的大小常和宽都-6,减去了中间sobel滤波器的大小。
使用边缘提取技术因为噪声、提取函数本身缺陷等原因,可能出现离散的不连续的点,而不是一条连贯的线,这时候我们可以选取hough变换找到这些不连贯的点组成的直线的方程,从而将其连贯的在画布上表示。
这两个技术单独说起来都比较简单,然而当我们真正拿到一张图片(手机拍摄)去做边缘提取的时候就需要不断思考。
首先给出其中一个例子:

这里拍的是一张平放在桌面的纸,我们的目标是提取出纸张的边缘。
一开始我直接使用canny直接提取边缘↓

可以看到canny对边缘提取信息的效果非常好,放大图片的话全部文字基本都是清晰的,然而也有很多噪声引入。
一开始我考虑在canny后使用形态学的腐蚀和膨胀解决噪声点,不过结果不太理想。以下是使用3x3的矩阵,如果矩阵覆盖的范围内特征点小于等于三,就做腐蚀,之后膨胀后的结果。

可以看到噪声大部分的除去都做到了,但是下面的边缘也被大面积腐蚀掉。如果图片边缘提取出来的结果比较稀疏稍,那么就可能四条边缘都被大比例的腐蚀掉,这样结果就十分糟糕。
所以后来我放弃了先提取边缘后使用形态学腐蚀和膨胀除去噪声的方式,我直接把彩色图片转灰度图,然后使用灰度图的去噪工具(中值、均值滤波)先去掉部分噪声,之后使用canny提取边缘。
这样效果就比较好。

这是另一张图片的两种方式处理的效果对比,可以看到基本没有噪声点而且保留了边缘。
hough变换是一个常用的直线、曲线提取技术,核心思想是两个空间平面的互相转换,他的特性网上诉说的有很多,具体可以参考详细说hough技术的另一篇博客:【待写】
然而处理图片的时候发现不论阈值如何选择,对于上面的图片,相对接近垂直的线条总是不能表示出来。经过调查发现这是因为我的canny有缺陷,较为垂直的线条只能出来零散的点,而偏横着的线就比较连贯。
+CIMG+彩色图片边缘提取实验记录_canny/hough transfrom的更多相关文章
- 怎么样用opencv将彩色图片转化成像素值只有0和255的灰度图?
分类: OpenCV [Q1]怎么样用opencv将彩色图片转化成像素值只有0和255的灰度图? 进行灰度化,IplImage* pImg = cvLoadImage( "C:\\1.b ...
- fcn+caffe+siftflow实验记录
环境搭建: vs2013,编译caffe工程,cuda8.0,cudnn5.1,python2.7. 还需要安装python的一些包.Numpy+mkl scipy matplotlib sci ...
- case7 淋巴瘤子类分类实验记录
case7 淋巴瘤子类分类实验记录 简介 分类问题:3分类 (identifying three sub-types of lymphoma: Chronic Lymphocytic Leukemia ...
- 实验记录:Oracle redo logfile的resize过程
实验记录:Oracle redo logfile的resize过程. 实验环境:RHEL 6.4 + Oracle 11.2.0.3 单实例 文件系统 实验目的:本实验是修改redo logfile的 ...
- c# winform 把彩色图片转换为灰色的图片,变灰,灰度图片,速度很快,safe,unsafe
把彩色图片转换为灰色的图片,直接用.net接口遍历每个像素点转换的效率非常低,800K的图片65万像素我的电脑要用5分钟,而用了unsafe,速度提高了几千倍,同样的图片只用了0.几秒 附一个常用的遍 ...
- 纠错:基于FPGA串口发送彩色图片数据至VGA显示
今天这篇文章是要修改之前的一个错误,前面我写过一篇基于FPGA的串口发送图片数据至VGA显示的文章,最后是显示成功了,但是显示的效果图,看起来确实灰度图,当时我默认我使用的MATLAB代码将图片数据转 ...
- 使用Scapy向Mininet交换机注入流量 实验记录
使用Scapy向Mininet交换机注入流量 实验记录 用Python脚本及Scapy库写了一个简单的流量生成脚本,并打算使用该脚本往Mininet中的OpenvSwitch交换机注入流量.拓扑图如下 ...
- 【转载】 opencv, PIL.Image的彩色图片维度 && caffe和pytorch的矩阵维度
原文地址: https://blog.csdn.net/u011668104/article/details/82718375 ------------------------------------ ...
- 动态将彩色图片动画过渡到黑白图片的BlackAndWhiteView
动态将彩色图片动画过渡到黑白图片的BlackAndWhiteView 效果如下: BlackAndWhiteView.h 与 BlackAndWhiteView.m // // BlackAndWhi ...
随机推荐
- Keepalived双主模式配置流程
实验说明 1)keepalived 支持配置多个VRRP实例,每个实例对应一个业务 2)本次实验将实现 keepalived 的互为主备: 业务A:keepalived01为Master,keepal ...
- 节能减排到底如何----google earth engine 告诉你!!
(First,再次严谨说明,本人成果未经允许,切勿发表到相关学术期刊,如果有技术交流,qq1044625113,顺便打个广告,兼职GEE开发,欢迎联系!) 终于过了严寒的冬天,2017年的冬天中国南方 ...
- 移动端使用rem.js,解决rem.js 行内元素占位问题
父级元素: letter-spacing: -0.5em;font-size: 0; 子级元素: letter-spacing: normal; display: inline-block; vert ...
- Mui a 链接失效的解决办法
方法一: mui('body').on('tap', 'a', function() { if(this.href){ //判断链接是否存在 location.href = this.href; ...
- 【python】UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte
header中干掉 "Accept-Encoding": "gzip, deflate, br", 注意:
- bower工具
1.安装bower npm install bower -g 2.安装软件 borwer install jquery 3.安装指定版本 borwer install jquery#1.7 4.卸载软 ...
- 前端笔记之React(三)使用动态样式表&antd&React脚手架&props实战
一.使用动态样式表 1.1 LESS使用 全局安装Less npm install -g less 创建1.less文件,然后可以用lessc命令来编译这个文件: lessc 1.less 1.css ...
- Python之matplotlib库学习:实现数据可视化
1. 安装和文档 pip install matplotlib 官方文档 为了方便显示图像,还使用了ipython qtconsole方便显示.具体怎么弄网上搜一下就很多教程了. pyplot模块是提 ...
- pod lib create ObjcName 时候报错error: RPC failed; curl 56 LibreSSL SSL_read: SSL_ERROR_SYSCALL, errno 54
众所周知 pod lib create ObjcName 需要从git 上边克隆模版 :https://github.com/CocoaPods/pod-template.git 然后有时候会很慢报错 ...
- netty实现的RPC框架
自己手撸了一个nettyRPC框架,希望在这里给有兴趣的同学们做个参考. 要想实现nettyrpc需要了解的技术要点如下: spring的自定义注解.spring的bean的有关初始化. 反射和动态代 ...