+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 ...
随机推荐
- netcore mvc快速开发系统(菜单,角色,权限[精确到按钮])开源
AntMgr https://github.com/yuzd/AntMgr 基于netcore2.0 mvc 开发的 快速搭建具有如下特色的后台管理系统 特色: 用户管理 菜单管理 角色管理 权限管理 ...
- Eclipse远程代码调试
前提:远程服务器上运行的WEB项目class对应的源码与本地项目中必须保持一致 也就是远程tomcat部署的项目就是本机项目打包过去的,而本机项目没有发生变动. 1.配置$tomcat_home/bi ...
- python trojan development 3rd —— use python to creative a simple shell
前两篇文章的木马太被动,今天是通过socket和os来进行主动木马编写 有些s13,我真的搞不懂拿一些没过脑子的代码就放到网上去害人,骗流量,还某知名安全企业学院写的,真的服.我的代码自己运行过,很稳 ...
- 一文看懂javaGC
javaGC回收机制 在面试java后端开发的时候一般都会问到java的自动回收机制(GC).在了解java的GC回收机制之前,我们得先了解下Java虚拟机的内存区域. java虚拟机运行时数据区 j ...
- C++标准库(体系结构与内核分析)(侯捷第一讲)
一.C++标准库介绍 C++标准库:C++ Standard Library C++标准库与STL有什么关系: STL:Standard Template Library STL包含6大部件,基本占标 ...
- js获取radio选中索引值
<form name="form1" onsubmit="return foo()"> <input type="radio&quo ...
- Codeblocks 批量注释与对齐快捷键的教学方法
Ctrl+Shift+C 批量注释 Ctrl+shift+X 批量取消注释 Click Settings->Editor->KeyboardShortcuts (in the left o ...
- Linux 中 IDEA 不能调试(Debug)项目
问题描述: can't debug project on idea linux. 在Linux 中, IDEA能运行项目,但是点击调试项目,弹出警告.警告内容如下: Required connecto ...
- fis3前端工程构建配置入门教程
一.前言 fis3是百度推出的一款前端工程构建工具,类似的还有webpack,gulp等工具:无论大家有没有使用过,从事前端行业应该都略知一二了,所以对于此类工具用干嘛的我这里就不做重复了. 其实对于 ...
- kubeadm安装k8s
软件版本: kubelet:V1.13.3 docker: 18.06.1 实验环境: Centos 7.5.1804 说明: 初学.安装步骤参考了阿良的文档,并做了部分修改. 步骤如下: 1.关闭防 ...