自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(119)
  • 资源 (6)
  • 收藏
  • 关注

原创 图像传统方法——预处理解决椭圆物体边缘粘连问题

写在前面再过2个小时,就是2020年了,回顾2019,有得也必有失,只感叹时间过得真的很快,像我这样的贫困人口也要被消灭了,哈哈。2019最后这2个小时就用一篇博客作为结尾吧。昨天CSDN上一位同学说他们要做一个豆子识别的任务,但是豆子之间的粘连比较严重,如下图,不利于豆子的识别,问我有什么方法可以解决,当然深度学习完全可以做到完美分割与识别,但是他的需求只是预处理,传统的图像处理就可以,...

2019-12-31 23:05:53 2870 21

原创 【数字图像处理基础算法】

主要把图像处理的一部分经典基础算法梳理并实现了一遍,主要是用VS2013+OpenCV3.1.0做的。主要目的:一是为了把基础巩固一下,以便更高效地看论文;二是为了工作基础。因为以前在学习和研究的过程中发现自己基础不牢,缺乏对图像处理理论的系统认识。比如看论文时,遇到很多基础的小点都得去查,发现很多地方好像都是沟沟坎坎;因为知识缺乏系统性,所以思维很局限,没办法展开和联想,被作者牵着走,感...

2019-06-17 22:56:17 7579

原创 色彩转换系列之RGB格式与YUV格式互转原理及实现

写在前面首先介绍一下YUV颜色空间,YUV(亦称YCrCb)是被欧洲电视系统所采用的一种颜色编码方法。在现代彩色电视系统中,通常采用三管彩色摄像机或彩色CCD摄影机进行取像,然后把取得的彩色图像信号经分色、分别放大校正后得到RGB,再经过矩阵变换电路得到亮度信号Y和两个色差信号R-Y(即U)、B-Y(即V),最后发送端将亮度和两个色差总共三个信号分别进行编码,用同一信道发送出去。这种色彩的表示...

2019-06-17 15:40:52 14435 9

原创 色彩转换系列之RGB图转灰度图原理及实现

写在前面彩色图转灰度图在图像处理中应用非常非常广泛,而且很多算法只对灰度图有效,所以彩色图转灰度是十分重要和关键的。RGB(红绿蓝)是依据人眼识别的颜色定义出的空间,可表示大部分颜色。但在科学研究一般不采用RGB颜色空间,因为它的细节难以进行数字化的调整。它将色调,亮度,饱和度三个量放在一起表示,很难分开。它是最通用的面向硬件的彩色模型。该模型用于彩色监视器和一大类彩色视频摄像。 ...

2019-06-17 13:57:10 7720 3

原创 Laplacian算子-Log算子-Dog算子边缘检测原理合集及实现

写在前面这里,我们将Laplacian算子-Log算子-Dog算子合在一篇博文写,为什么呢?因为这3个算子有非常大的关联性:Dog算子可以近似Log算子,而Log(Laplacian of gaussain)算子的基础是Laplacian算子。所以合在一起写更加方便,也更加能够突出这种关联性和递进的关系。值得说明的是:区别于Roberts算子、prewitt算子、sobel算子;Lapla...

2019-06-12 11:57:16 20682 6

原创 Canny算子边缘检测原理及实现

写在前面Canny边缘检是在在1986年提出来的,到今天已经30多年过去了,但Canny算法仍然是图像边缘检测算法中最经典、先进的算法之一。相比Sobel、Prewitt等算子,Canny算法更为优异。Sobel、Prewitt等算子有如下缺点:没有充分利用边缘的梯度方向。 最后得到的二值图,只是简单地利用单阈值进行处理。而Canny算法基于这两点做了改进,提出了:基于边缘梯度...

2019-06-11 12:34:09 112400 37

原创 Sobel算子边缘检测原理及实现

写在前面Prewitt算子同样是一种一阶微分算子,它的卷积算子和Prewitt算子非常类似,仅仅是系数不同,但Sobel算子对于像素位置的影响做了加权,与Prewitt算子、Roberts算子相比效果更好。优点对边缘定位较为准确,能较好地处理灰度渐变和噪声较多的图像,计算简单,可分别计算水平和垂直边缘,如EasyPR用其定位车牌。原理首先我们看Sobel算子: ...

2019-06-10 22:33:27 11499 1

原创 Prewitt算子边缘检测原理及实现

写在前面Prewitt算子同样也是一种一阶微分算子,利用像素点上下左右邻点灰度差,在边缘处达到极值检测边缘,对噪声具有平滑的作用。原理其原理是在图像空间利用两个方向模板与图像进行邻域卷积来完成的,这两个方向模板一个检测水平边缘,一个检测垂直边缘。相比Roberts算子,Prewitt算子对噪声有抑制作用,抑制噪声的原理是通过像素平均,因此噪声较多的图像处理得比较好,但是像素平均相当...

2019-06-10 18:22:36 22216 1

原创 Roberts算子边缘检测原理及实现

写在前面我们知道,进行边缘检测有两种方法:一阶导数的极值、二阶导数的过零点。Robert算子是一种一阶微分算子,而且Robert算子是第一个边缘检测算子,提出者是Lawrence Roberts in 1963。从这篇博客开始,会陆续介绍几种经典的边缘检测算子。先附上各种边缘检测算法的优缺点: 原理Roberts算子是一种斜向偏差分...

2019-06-10 17:31:41 32146 1

原创 读研投小论文感想与总结(一)

首先要感谢这位博主:元气少女缘结神,她的这篇文章:读研期间小论文投稿-个人总结给了我很大的信心和帮助。我第一次看是读研一刚准备写论文的时候,那时很懵懂,很多期刊、选刊方法和投稿技巧都不懂,当时看了她的文章就觉得她很厉害,但没有仔细研究她写的方法;第二次看是我的文章经历了3次拒稿后,那时候几乎已经丧失信心了,开始怀疑人生了,我看到她投过《红外技术》,说这个期刊比较良心,质量也好,然后我就在评论区寻...

2019-05-29 10:36:31 7085 29

转载 形态学分水岭算法原理及示例实现

原理介绍前面写了OTSU算法、最大熵算法、自适应阈值法、基于区域生长算法。他们都有各自的优缺点,而分水岭算法具有它们都具有的优势,所以通常能够产生更加稳健的分割效果。分水岭算法(watershed)是一种比较基本的数学形态学分割算法,其基本思想是将灰度图像转换为梯度图像,将梯度值看作高低起伏的山岭,将局部极小值及其邻域看作一个“集水盆”。设想一个个“集水盆”中存在积水,且水位不断升高,淹没...

2019-05-15 11:20:10 10579 2

原创 区域生长算法原理及实现

写在前面前面写了OTSU算法、最大熵算法、自适应阈值法,这些都是基于阈值的分割算法。今天写一下基于区域的分割算法,其中最为有名和经典的就是区域生长算法。值得说明的是:OpenCV没有提供区域生长算法的API。优点:基本思想相对简单,通常能将具有相同特征的联通区域分割出来,并能提供很好的边界信息和分割结果。在没有先验知识可以利用时,可以取得最佳的性能,可以用来分割比较复杂的图象,如自然景...

2019-05-14 22:20:05 50188 8

原创 自适应阈值(adaptiveThreshold)分割原理及实现

背景介绍及原理前面介绍了OTSU算法和最大熵算法,但这两种算法都属于全局阈值法,所以对于某些光照不均的图像,这种全局阈值分割的方法会显得苍白无力,如下图: 显然,这样的阈值处理结果不是我们想要的,那么就需要一种方法来应对这样的情况。这种办法就是自适应阈值法(adaptiveThreshold),它的思想不是计算全局图像的阈值,而是根据图像不同区域亮...

2019-05-14 20:27:27 83254 26

原创 最大熵阈值分割算法原理及实现

写在前面前面介绍了OTSU算法,对于阈值分割法,不得不介绍另外一种较为突出的算法——最大熵阈值分割法(KSW熵算法)。最大熵阈值分割法和OTSU算法类似,假设将图像分为背景和前景两个部分。熵代表信息量,图像信息量越大,熵就越大,最大熵算法就是找出一个最佳阈值使得背景与前景两个部分熵之和最大。原理由于和OTSU算法类似,所以原理上就不再赘述和推导,言简意赅。 ...

2019-05-14 19:39:48 17429 13

原创 OTSU算法(大津法—最大类间方差法)原理及实现

写在前面大津法(OTSU)是一种确定图像二值化分割阈值的算法,由日本学者大津于1979年提出。从大津法的原理上来讲,该方法又称作最大类间方差法,因为按照大津法求得的阈值进行图像二值化分割后,前景与背景图像的类间方差最大。它被认为是图像分割中阈值选取的最佳算法,计算简单,不受图像亮度和对比度的影响,因此在数字图像处理上得到了广泛的应用。它是按图像的灰度特性,将图像分成背景和前景两部分。因方差...

2019-05-13 22:26:12 165794 40

转载 C语言不同数据类型间的混合运算转换规则+常见数据类型

在程序中经常会遇到不同类型的数据进行运算,若一个运算符两侧的数据类型不同,则先自动进行类型转换,使两者具有同一类型,然后进行运算,现将规律总结如下:1. +. -. *. /运算的两个数中有一个数为float或double型,结果是double型,因为系统将所有float型数据都先转换为double型,然后进行运算;2. 若int型与float或double型数据进行运算,先将int型和f...

2019-05-04 15:56:51 8964

原创 引导滤波(GuidedFilter)原理及C++实现

写在前面引导滤波是何恺明读博士的时候提出来的一种去噪保边算法,很有名。作者其主页上给出了该算法的Matlab实现和原文。而且他提出的基于暗通道去雾算法技惊四座,获CVPR2009最佳论文(膜拜),近几年在CV领域的成果也相当丰硕,关于他的研究动态,可以访问http://kaiminghe.com/。优点:1、应用面很广、很广;2、能够克服双边滤波的梯度翻转现象,在滤波后图像的细节上...

2019-05-02 19:49:26 7284 1

原创 双边滤波(bilateralfiter)原理及C++实现

写在前面双边滤波是一种非线性滤波,能够达到去噪保边的效果。相比高斯滤波,双边滤波多了一种掩膜,也就是还考虑了灰度相似性,所以双边滤波是结合图像的空间邻近度和像素值相似度的一种折衷处理。先看看对比效果:wsize=23*23, sigma(space)=10,sigma(color)=35 ...

2019-05-02 16:45:00 11139 5

原创 高斯滤波(GaussianFilter)原理及C++实现

写在前面首先,搞清楚几个概念:滤波(高通、低通、带通、带阻) 、模糊、去噪、平滑,看下图: 滤波是对输入信号进行卷积处理的一个过程,写成一个表达式的形式是这样的:滤波 = 卷积( 输入信号 ,卷积模板 ), 卷积模板/掩膜 的不同决定了不同的滤波方式,也因此产生了高通、低通、带通、带阻等基本的...

2019-05-02 12:17:18 33270 16

原创 盒子(方框)滤波(BoxFilter)原理及C++及Matlab实现

写在前面盒子滤波是一种非常有用的线性滤波,也叫方框滤波,最简单的均值滤波就是盒子滤波归一化的情况。应用:可以说,一切需要求某个邻域内像素之和的场合,都有盒子滤波的用武之地,比如:均值滤波、引导滤波、计算Haar特征等等。优势:就一个字:快!它可以使复杂度为O(MN)的求和,求方差等运算降低到O(1)或近似于O(1)的复杂度,也就是说与邻域尺寸无关了,有点类似积分图吧,但是貌似比积分图...

2019-05-01 21:40:59 17671 12

原创 子块部分重叠直方图均衡算法(POSHE算法)MATLAB实现

写在前面POSHE算法原理解读及c++代码实现请看:https://blog.csdn.net/weixin_40647819/article/details/88416512这次用MATLAB实现。代码git 下载地址:https://github.com/2209520576/Image-Processing-Algorithm/tree/master/Graysca...

2019-04-27 16:51:17 2649 14

原创 中值滤波原理及c++实现

写在前面中值滤波器是一种非线性滤波器,或者叫统计排序滤波器。应用:中值滤波对脉冲噪声(如椒盐噪声)的抑制十分有用。缺点:易造成图像的不连续性。原理原理很简单,如果一个信号是平缓变化的,那么某一点的输出值可以用这点的某个大小的邻域内的所有值的统计中值来代替。这个邻域在信号处理领域称之为窗(window)或者模板(Mask)。模板开的越大,输出的结果就越平滑,但也可能会把我们...

2019-03-24 18:06:15 7963 4

原创 积分图实现快速均值滤波

写在前面在实际应用中,效率是不得不考虑的问题。上一篇博客介绍了均值滤波原理,这一篇就写用积分图实现的快速均值滤波吧。还是贴一下常规与快速的效率对比吧:下图是常规均值滤波处理一张分辨率为485*528图像的时间(模板15*15):下图是积分图快速均值滤波处理的时间(模板15*15):可以说加速后,速度提升很多。而且最重要的是,用积分图的快速均值滤波受模板变化的影响不大!!...

2019-03-24 14:24:52 7992 8

原创 均值滤波原理及C++实现

写在前面从均值滤波开始,着手实现各种常用的滤波算法。均值滤波是一种线性滤波。图像的空域滤波无非分为两种,线性滤波和非线性滤波。由于我之前对线性、非线性理解不够清晰,这次就好好总结一下吧。线性滤波:对邻域中的像素的计算为线性运算时,如利用窗口函数进行平滑加权求和的运算,或者某种卷积运算,都可以称为线性滤波。常见的线性滤波有:均值滤波、高斯滤波、盒子滤波、拉普拉斯滤波等等,通常线性滤波器之间只...

2019-03-24 11:55:46 12030 4

原创 子块部分重叠直方图均衡算法(POSHE算法)原理解读及c++实现(二)

写在前面接着上次的博客写,上次已经介绍完了POSHE部分,也为这次写BERF做了一些铺垫。在这次正式开始之前,还是先放两张图片,以说明执行BERF的必要性:仅执行POSHE 执行BERF...

2019-03-23 22:14:36 1314 2

原创 子块部分重叠直方图均衡算法(POSHE算法)原理解读及c++实现(一)

写在前面Matlab版代码:https://blog.csdn.net/weixin_40647819/article/details/89603660最近刚好写到了直方图均衡算法,因为之前用到过图像增强,就大致地再多了解了一下,看到了POSHE算法,这个算法也算是比较经典的吧,有一些它的优势。其实这篇论文是很老的论文了,是韩国人提出的,目前看来可能意义不大,但是我看了一下引用情况,中文论...

2019-03-12 19:46:47 5574 22

原创 直方图均衡化算法原理与c++实现

写在前面直方图均衡是图像增强的基础算法,本质上是一种非线性拉伸,使图像的灰度级分布变得较为均匀,从而增强图像的对比度,使这些不够明显的图像细节清晰可见。掌握一种算法,必须要弄清楚它的优势和缺点,要知道它的适用场合,这样才能灵活的运用这些算法。直方图均衡算法的优势:对于背景和前景都太亮或者太暗的图像非常有用,计算量不大,完全可以满足实时。并且是可逆操作,也就是说如果已知均衡化函数,那么就可以...

2019-03-12 09:33:49 2646

转载 Gamma校正原理及c++实现(查找表法)

写在前面 如果直接按公式编程的话,需要执行大量浮点数的乘法、除法和指数运算。效率太低,在应用时是肯定不行的。  针对上述情况,有人提出了一种快速算法,如果能够确知图像的像素取值范围, 例如, 0 ~ 255 之间的整数, 则图像中任何一个像素值只能 是0到255这256个整数中的某一个 ; 在gamma 值 已知的情况下...

2019-02-28 14:38:25 4390

原创 图像灰度变换原理及c++实现——图像反转,对数变换,对比度拉伸,比特平面分层

写在前面先交代下代码实现的技术细节吧。1、在最后的代码里,图像反转,对数变换方法1,对比度拉伸,比特平面分层的实现均采用指针访问像素的方式,以前总是用Opencv的at模板,但是指针最为高效,我还是用一下指针吧。当然,还有迭代器访问的方式,也是最为安全的方式,以后试一下。访问元素的方式常用的有四种,详情可以参考:https://www.cnblogs.com/ronny/p/opencv_...

2019-02-28 11:02:29 4631 1

原创 图像的仿射变换原理及c++实现(旋转,平移,缩放,偏移,组合变换)

github地址:https://github.com/2209520576/Image-Processing-Algorithm一.写在前面 几何空间变换是图像处理中的最基础的算法,主要包括图像的旋转,平移,缩放,偏移,组合变换等等,在冈萨雷斯的数字图像处理第三版的第二章就做了相关介绍,最常用的空间坐标变换之一就是仿射变换。虽然仿射变换很基础,但作用还是很大的,例如在车牌识别的预处理...

2019-02-25 11:44:23 13541 17

原创 图像缩放中的插值算法——双线性插值原理及c++实现

github地址:https://github.com/2209520576/Image-Processing-Algorithm首先感谢大牛博客:http://handspeaker.iteye.com/blog/1545126 https://www.cnblogs.com/yssongest/p/5303151.html...

2019-01-22 21:18:47 10448 10

原创 图像缩放中的插值算法——最近邻插值算法及c++实现

github地址:https://github.com/2209520576/Image-Processing-Algorithm图像的缩放很好理解,就是图像的放大和缩小。传统的绘画工具中,有一种叫做“放大尺”的绘画工具,画家常用它来放大图画。当然,在计算机上,我们不再需要用放大尺去放大或缩小图像了,把这个工作交给程序来完成就可以了。下面就来讲讲计算机怎么来放大缩小图象;在本文中,我们所说的图...

2019-01-22 20:18:03 6562 7

原创 Sensor成像基本原理

由于我近3年都在做有关ISP的工作,工作中会接触到sensor相关的评估,但自己并非相关专业的,对sensor知识相对匮乏,这个系列的文章将会记录一些sensor相关的知识点,一是作为学习笔记,二是作为知识整理的分享。

2024-03-31 21:11:28 594

原创 Kalman滤波C语言和C++版本实现

写在前面Kalman滤波的理论是比较有深度的,涉及到很多公式推导,尤其是用到了很多线性代数的知识。这篇博客是博主基于工作内容实现的,所以主要偏向于应用,代码也是经过无数次验证了的,是比较稳定的,大家可以放心使用,有问题可以留言交流。关于更深层次的理论推导,这里将不会涉及,但是会推荐几个写的不错的博客供大家参考。Kalman滤波基本原理思想Kalman的思想还是很简洁的,标准卡尔曼滤波的核心思想是:假定观测的系统是线性的,噪声都满足高斯分布。这一刻系统的状态(最优估计)是这一刻的.

2021-01-17 22:10:35 6717 15

原创 VS中C++矩阵库 Eigen库的安装和使用

写在前面Eigen是使用C++封装好的的一个矩阵运算库,可以很方便地实现各类矩阵运算,而且不用安装,只需要简单配置即可。下载及配置下载地址: http://eigen.tuxfamily.org/index.php?title=Main_Page#Download配置: 选择红框中的版本下载; 然后随便放在你想放的位置,解压; 打开VS项目,依次在属性管理器中打开 —> C/C++ —> 常规 —>添加依赖项 ——&gt...

2020-12-10 09:43:23 3844

转载 嵌入式C语言源代码优化方案(非编译器优化)

嵌入式C语言源代码优化方案(非编译器优化)strongerHuang 9月13日关注、星标公众号,不错过精彩内容作者:王全明转自:嵌入式云IOT技术圈1、选择合适的算法和数据结构选择一种合适的数据结构很重要,如果在一堆随机存放的数中使用了大量的插入和删除指令,那使用链表要快得多。数组与指针语句具有十分密切的关系,一般来说,指针比较灵活简洁,而数组则比较直观,容易理解。对于大部分的编译器,使用指针比使用数组生成的代码更短,执行效率更高。...

2020-11-10 17:06:17 416

原创 牛客刷题-【01计算字符个数】

题目描述写出一个程序,接受一个由字母和数字组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。输入描述:第一行输入一个有字母和数字以及空格组成的字符串,第二行输入一个字符。输出描述:输出输入字符串中含有该字符的个数。示例1输入ABCDEFA输出1思路最简单的思路:就是遍历整个字符串,找出和输入字符相等的字符个数。注意,不区分字符大小写,大写字母和小写字母之间的ASCII码相差32。c++:#include &.

2020-10-09 19:55:17 284

原创 项目MFC总结(七)——实现鼠标框选图像局部,显示数据

初始状态:效果:功能:按下按钮【局部框选】,然后鼠标左键按下,拖动鼠标,图像上会画出矩形,鼠标左键抬起,会弹出提示框(提醒是否打开原始表格数据),选择后会弹出相应的数据进行显示。实现:1、左键按下,获取开始点(绘制矩形框的起始点);2、鼠标移动,绘制矩形框3、鼠标抬起,消隐最后一个矩形框,显示消息对话框。4、选择消息对话框的提示,然后显示数据!代码:左键按下//鼠标左键按下void CTouch_test_CKV10Dlg::OnLBut...

2020-09-12 17:17:44 2680 4

原创 项目【MFC】(六)-实现上一帧、下一帧、跳转至某帧

单从MFC的角度,这部分比较简单,无非就是添加控件,然后对控件添加对应的响应事件函数!关于添加控件和添加对应的响应事件函数,可以查看:项目MFC总结(二)——读取CSV文件将数据转化为图像显示在图片控件比较需要思考一下的是一些事件之间的协调,做到不冲突和影响!这里就先把代码记录一下吧~代码实现上一帧//上一帧void CTouch_test_CKV10Dlg::OnBnClickedButtonbefore(){ // TODO: Add your control notific.

2020-09-12 15:59:28 509

原创 项目【MFC】(五)-鼠标拖动实现图像移动

初始状态:拖动后:功能:点击按钮【移动图像】,然后鼠标放在图像显示区域,按下鼠标左键,鼠标移动,鼠标左键抬起实现图像拖动。实现思路:1、首先鼠标左键按下,获取起始点坐标;这个过程中需要判断鼠标是否放在图片显示控件上,若是才会响应事件!2、然后鼠标移动,实际上在这里,这一步没有执行任何操作!3、最后鼠标左键抬起,获取停止点坐标;这个过程中需要判断鼠标是否放在图片显示控件上,若是才会响应事件!获取停止点坐标后,就需要根据起始点坐标分别计算出x方向和方向的移动距离,然后..

2020-09-12 15:34:17 6085 7

kalman_c.zip

Kalman滤波纯C语言实现,实现了部分矩阵运算,算法验证过了,是稳定的。

2021-01-17

POSHE算法c++代码

这是按照论文原理用c++写的,有注解,修改读图片路径就可运行。详细解读可看:https://blog.csdn.net/weixin_40647819/article/details/88416512

2019-03-13

EasyUEFI免费版3.6

在UEFI模式下easyUEFI可以帮我们管理UEFI启动项,可以帮助我们删除卸载Ubuntu,进而重装~博主亲测可用!

2019-03-06

Git使用超有用教程

超级详细实用的git使用教程,有目录,包括windows和Linux下的使用方法,适合初学者学习~

2019-02-21

长江水质预测(2005年数学建模)+神经网络

这是2005年数学建模国赛a题,长江水质预测,采用matlab实现,若有需要可进行下载交流。

2018-04-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除