图像处理算法
文章平均质量分 80
各种手撕图像处理算法
周旋机器视觉
机器视觉图像处理算法与软件开发工程师
展开
-
【手撕算法】FMM图像修复算法C++实现
FMM算法出自Telea的论文An Image Inpainting Technique Based on the Fast Marching Methodopencv的inpaint函数就是采用了Telea的基于FMM的图像修复算法,本文基于opencv的inpaint函数,该函数源码位于(我的):opencv\sources\modules\photo\src\inpaint.cppFMM算法基于的思想是,先处理待修复区域边缘上的像素点,然后层层向内推进,直到修复完所有的像素点。下面原创 2021-04-19 12:19:50 · 2030 阅读 · 0 评论 -
【手撕算法】PatchMatch图像修复算法C++实现
PatchMatch图像修复算法PatchMatch算法出自Barnes的论文PatchMatch: A Randomized Correspondence Algorithm for Structural Image EditingPatchMatch 算法就是一个找近似最近邻(Approximate Nearest neigbhor)的方法,要比其他ANN算法快上10倍+。将下面的图理解了,就基本理解了整个算法。看上图时,我们以蓝色为主颜色。A代表原图像,矩形框代表待修复的patch块,原创 2021-04-19 12:18:44 · 1994 阅读 · 8 评论 -
【手撕算法】Criminisi图像修复算法C++实现
该算法出自Criminisi的论文Region Filling and Object Removal by Exemplar-Based Image Inpainting该算法只要思路是利用图片的已知区域对待修复区域进行填充。而填充的顺序是根据计算优先级确定的,填充的基本单位是自定义大小的像素块。先来看一下论文中比较重要的两个图片,图一介绍了填充的基本原理:将图像分为已知区域(source region)和待填充或移除区域(target region),填充从target region的边界原创 2021-04-19 12:16:32 · 2677 阅读 · 5 评论 -
图像修复系列资料
图像修复系列资料通过图像分割和显著性检测这两个系列,我认为在开始写算法之前先放一篇综述整理会更好一些。综述整理文会包含对该系列大体的介绍,介绍将会分析哪几个经典算法,以及在学习这些算法时我所参考的所有文章资源,我觉的一个算法靠一篇文章绝对无法使大家学会,所以大家可以看看我参考的那些博客,会事半功倍。图像修复综述首先辨别一下图像修复,图像复原,图像补全这仨的关系。图像修复偏重修复划痕之类的这种小破损,而图像补全则偏重修复大块的缺损(包括物体移除之类的),图像复原则是提高图像的成像质量。本系列的算法原创 2021-04-19 12:13:18 · 1280 阅读 · 0 评论 -
【手撕算法】AC显著性检测算法
【手撕算法】AC显著性检测算法算法原理论文名称:Salient Region Detection and SegmentationAC算法同样是计算每个像素的显著值,但却不是基于全局对比度,而是基于一定尺度的感知单元的。而且整个AC算法是融合了多个不同尺度的感知单元计算的显著值得到的最终显著图。如上图,R1为当前像素,计算当前像素的显著值,需要计算该像素LAB三个通道的特征值与R2区域(上图为5*5)所有像素特征值的均值的差。而R2区域的半径是可变的,算法设定R2区域的大小范围:MinR2原创 2021-04-19 12:11:53 · 1272 阅读 · 0 评论 -
【手撕算法】FT显著性检测算法
FT算法原理FT算法出自论文:Frequency-tuned salient region detectionFT算法实现也非常简单,该方法从频率角度分析图像。图像在频率域可以分成低频部分和高频部分。低频部分反映了图像的整体信息,如物体的轮廓,基本的组成区域。高频部分反映了图像的细节信息,如物体的纹理。显著性区域检测用到的更多的是低频部分的信息。在实际进行计算时,FT方法使用窗口5*5的高斯平滑来实现对最高频的舍去。像素的显著性可以用下面公式计算:其中,Iu为图像的平均特征,使用Lab颜色特原创 2021-04-19 12:10:58 · 2344 阅读 · 0 评论 -
【手撕算法】HC显著性检测算法
【手撕算法】HC显著性检测算法前言HC算法出自程明明老师的论文:Global Contrast based Salient Region Detection这个论文一共提到了两种算法,分别是HC与RC。HC仅仅是考虑了颜色特征,而RC考虑了空间特征。我们上一篇文章介绍的LC算法就是仅考虑了颜色特征。HC算法和LC算法本质上是没有什么区别的, 但上篇LC算法我们给出代码处理的是灰度图,而HC算法是在LAB颜色空间处理的彩色图。RC以后再说。此外我建了一个微信交流群,号主我比较菜,不过群里有原创 2021-04-19 12:09:01 · 584 阅读 · 0 评论 -
【手撕算法】HC显著性检测算法
前言HC算法出自程明明老师的论文:Global Contrast based Salient Region Detection这个论文一共提到了两种算法,分别是HC与RC。HC仅仅是考虑了颜色特征,而RC考虑了空间特征。我们上一篇文章介绍的LC算法就是仅考虑了颜色特征。HC算法和LC算法本质上是没有什么区别的, 但上篇LC算法我们给出代码处理的是灰度图,而HC算法是在LAB颜色空间处理的彩色图。RC以后再说。此外我建了一个微信交流群,号主我比较菜,不过群里有厉害的哈哈,欢迎大家进群一起学习.原创 2021-03-05 08:49:30 · 4091 阅读 · 7 评论 -
【手撕算法】C++实现超像素分割算法
写完这篇,图像分割的传统方法就快全了,传统图像分割大体有基于阈值的,这类就没啥算法可以写,所以直接略过了;然后就是K-means这种聚类/分裂的,从几个点开始进行聚类分割,或者一张图不断分裂达到分割目的;【手撕算法】K-means算法实现主题色提取再有就是区域生长这类的;【手撕算法】基于队列实现的区域增长分割算法以及分水岭算法,分水岭算法代码写好有一段时间了,但实在不知道文章咋写…就再放放吧;最后就是超像素分割了,超像素分割有k-means算法的影子,所以可以先看看k-means算法的代码实现过程.原创 2021-03-02 09:23:09 · 1655 阅读 · 0 评论 -
【手撕算法】K-means算法实现主题色提取
K - Means是一种对图像进行聚类的算法,属于无监督分割聚类方法,这种方法不对聚类进行层次划分,只是通过分析聚类的性质和均值,将像素简单地划分为不相交的聚类。今天结合一个在知乎看到的问题来说:一张图片上有上百种颜色,如何在一张图上筛选出小于五种的基本色,或者在一张图上进行颜色划分归类?为了做品牌,我们需要从符合品牌调性的图片中提取品牌色,但一张图片的颜色有上百种 我们怎么把这些颜色归类划分 提取呢?有答友已经回答了该问题,我们今天就是C++实现K-means算法来解决这个问题。该问题链接:.原创 2021-03-02 09:20:48 · 1153 阅读 · 1 评论 -
【手撕算法】基于队列实现的区域增长分割算法
上一篇介绍了深度搜索DFS和广度搜索BFS两个算法,本文就是基于BFS算法实现的区域增长算法。此外建了一个qq群:222954293,既方便大家一起交流学习,还可以传一些程序文件,欢迎大家加入交流。程序源码我就放群里了。区域增长算法简介区域增长算法的原理非常简单,就是以一个种子点作为生长的起点,然后将种子周围的点(可以是四邻域也可以是八邻域)进行筛选(筛选条件可以是与种子点像素值是否接近,或者像素梯度是否小于阈值等等)。如果满足相似性,则该像素归为和种子一类,并对这个像素进行邻域分析,直到没有新的像原创 2021-02-06 18:40:16 · 505 阅读 · 0 评论 -
【手撕算法】opencv实现走迷宫算法
好久没更新了!我又带着干货回来了。此外建了一个qq群:222954293,既方便大家一起交流学习,还可以传一些程序文件,欢迎大家加入交流。本文利用opencv实现了深度优先搜索DFS和广度优先搜索BFS两个算法来走迷宫,迷宫也是用opencv+鼠标画的。绘制迷宫首先是绘制一个迷宫了,直接网上找一个迷宫图然后opencv二值化处理一下也可以。我是利用鼠标回调函数自己画的,更简洁明了一些。在画迷宫时,我们鼠标点击左键,则在点击位置放置一块墙(白色),点击右键,则放一块路(黑色),点击中键,则放置一块.原创 2021-02-04 15:15:41 · 1723 阅读 · 1 评论 -
我是如何开启深度学习之路的?
想学深度学习?我把我的学习路线和搜集的学习资源都给你,一起入坑吧!原创 2020-02-23 12:59:07 · 920 阅读 · 0 评论 -
win10+ubuntu18.04双系统安装/大集合
安装了很多次Ubuntu系统了,今天来总结一下,扫清所有障碍的双系统安装大集合!原创 2020-02-19 09:48:18 · 2046 阅读 · 0 评论 -
【RoboMaster】我是这样搞定第一次单目相机测距的
之前在做一个单目测距的小项目,大概需要就是用单目相机,对一个特定的目标进行识别并测算相机与该目标的距离。所以便去网上找了一堆教程,这里给大家总结一下,希望给小白们一个参考。首先是基本需求了:opencv自然要会的,这咱就不多说了,会一点就行需要一个摄像头,我用的是一个畸变很大的鱼眼免驱动摄像头,大家用电脑上的那个自带摄像头也可以的,就是不方便。需要MATLAB进行相机标定需要一个编程环...原创 2020-02-03 22:09:35 · 5399 阅读 · 14 评论 -
Win10+VS2017+opencv410+ZBar库完美配置
ZBar库 超级傻瓜配置,一套完美完成,超良心制作首先给大家放一个链接:Windows系统下ZBar库的配置(VS2015+OpenCV3.4.3+ZBar0.10)我是看着上文配置成功的,不过我的环境是VS2017+opencv4.10,大家看自己需要进行参考吧,其实思路都一样。最近在做一个opencv单目测距的小任务,而测距的对象,自然是二维码比较简单些,新版opencv也有二维码识...原创 2020-01-31 22:20:09 · 2076 阅读 · 2 评论 -
VS2017配置Opencv4.10教程
Opencv 超级傻瓜配置,一套完美完成,超良心制作opencv安装包下载已经下载好的可以跳过。官网去下载opencv的函数包,官网地址:https://opencv.org/点击箭头releases,跳到如下页面:进入后点击Windows,进入如下页面,点击下载,路径自己随便改。下载完毕后是个这个:安装,直接点击exe解压就行,地址放别的地不建议c盘,比较大:配置环境...原创 2020-01-31 21:42:00 · 5721 阅读 · 0 评论 -
GitHub新手指南
想来GitHub对于理工科,尤其计算机专业的大佬们应该很熟悉了,但作为机械专业小铁渣渣,自从创建了我的GitHub账号,就从来没在上面刨过什么好东西,更没有啥拿的出手的项目往上面晒了。今天给大家翻译了一下GitHub官网的使用简介,当初看英文看的一点耐心都没有,希望中文好些吧。原英文地址:https://guides.github.com/activities/hello-world/He...原创 2020-01-19 17:13:55 · 751 阅读 · 0 评论 -
Openmv新新手入门方法
前言openmv作为一个比较成完善的模块,在各种需要用到视觉的方面,比如做项目和参加比赛,都是常用到的一种。它是一个将摄像头和单片机处理器结合在一起的一种系统,且它的开发包简单易懂并且全面,在各种视觉处理方法选择中是比较好上手的一种,相当于单片机中的arduion,不过我并不常使用openmv来做我项目视觉的解决方法,因为觉得它封装的越好越显得low。。。不过仅是我个人看法。步骤一要学ope...原创 2020-01-11 21:34:59 · 11822 阅读 · 8 评论