
图像处理基础算法
奔跑熊
个人对图像处理,机器学习,深度学习等领域比较感兴趣,欢迎多交流!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
YUV转RGB
YUV格式具有亮度信息和色彩信息分离的特点,但大多数图像处理操作都是基于RGB格式。因此当要对图像进行后期处理显示时,需要把YUV格式转换成RGB格式。具体的转换关系如下图所示。#define YUV2R(y,u,v) (((y > 8)#define YUV2G(y,u,v) (((y > 8)#define YUV2B(y,u,v) (((y > 8)上面的代码中进行了原创 2018-02-07 15:06:33 · 822 阅读 · 0 评论 -
Canny之c语言实现
Canny是图像处理中经常用到的一种边缘检测算法,Canny的具体算法流程: (1)根据sobel后的结果,通过幅值和角度进行非极大值抑制 (2)对非极大值抑制后的结果进行双阈值处理 (3)双阈值后的图像,进行边缘连接,得到连续性较好的边缘信息 更加具体的理论可以参考:点击打开链接,本文主要是参考opencv源码实现的Canny,具体代码如下:void canny(...原创 2018-03-08 19:23:04 · 2149 阅读 · 0 评论 -
Sobel变换c语言实现
Sobel主要用于初步寻找图像的边缘信息,同时也可以起到图像锐化作用。常用的3*3的模板卷积实现,主要是通过水平和垂直两个方向卷积实现。具体代码实现:void sobel(image_t* src, grad_t *grad){ int y, x; int w = src->w; int h = src->h; grad->w = w; grad->...原创 2018-03-08 19:43:15 · 3584 阅读 · 7 评论 -
图像轮廓搜索c实现
图像轮廓搜索是图像处理中很基本很常用的算法,基于边缘跟踪的轮廓搜索是轮廓提取算法中较为高效的一种搜索算法。具体如下: (1) 从左到右,从上往下依次搜索非零点 (2) 搜索到非零点并标记当前非零点,对当前非零点的八邻域按照逆时针进行搜索下一个非零点 (3)若能够搜索到非零点,则重复步骤二,指导搜索完当前轮廓 (4)当前轮廓搜索完毕,则返回(1)进行下一个轮廓进行搜索...原创 2018-03-12 20:34:18 · 2702 阅读 · 2 评论 -
python+opencv实现hog+svm的训练
python实现hog+svm训练的网上很多,但是资源svm训练这一块都是通过skimage这个库来实现的,本文从hog特征提取到svm的训练,以及后面的测试都是通过调用opencv来实现的,这样对于基于opencv来做开发的话较为方便,python+opencv通常是在建模的时候会用到,这主要是python脚本语言的高效性。话不多少,下面直接上代码:"""Created on Tue ...原创 2018-04-03 20:13:43 · 38879 阅读 · 84 评论 -
win10+anconda+tensorflow安装
最近由于需要用到深度学习,经过一番调研发现tensorflow依旧是工业界模型实现的主流框架,于是自己尝试安装tensorflow。原以为直接采用pip就可以直接搞定,只能怪自己太天真,刚开始自己安装的是anconda最新版本,那么问题就来了,由于最新anconda自带的python版本太高导致tensorflow不支持;于是自己装了卸,卸了装还是没有成功。经过两个晚上的摸索终于成功地的跑...原创 2018-05-08 22:14:37 · 20237 阅读 · 3 评论 -
win10 + Dlib + vs2013编译配置
1、下载dlib,由于最近的dlib不支持vs2013,所以需要更低版本的dlib库,这里选用的是v18.16(下载链接:点击打开链接),根据自己需要也可以下载其他的版本。下载完v18.16压缩包后,直接解压,我这里是解压到E:\software目录下2、dlib准备好了,下面就是对dlib库进行编译,这里采用的是cmake3.10.3,网络有些博客提到cmake的版本有可能导致编译的不完整情形,...原创 2018-05-21 20:33:58 · 1234 阅读 · 4 评论 -
车道检测
车道检测的研究已经有了比较长的时间,现有的算法也五花八门,有基于轮廓进行车道线提取的,也有基于边缘特征提取的,最后采用直线拟合将车道线拟合出来。当然,我这里只是很概念性的说说。目前检测类的算法当然是深度学习的主流,因为其性能传统算法很难比拟,不过深度学习的缺陷就是计算吞吐量大,在计算方面传统算法还是比较有优势的。本文的车道检测算法采用的依旧是传统算法,没办法,资源有限,所以只能采用传统算法实现。...原创 2018-09-09 16:25:04 · 857 阅读 · 2 评论 -
dlib人脸检测c语言具体实现
dlib是一个很不错的视觉库,相比opencv,dlib里面的很多算法更接近工业实际,这个也只是个人的感觉。当然,opencv也很不错,涉及到的图像处理方方面面,为图像的开发者带来很多便利。最近一段时间在做hog这一块的检测算法的研究,opencv上实现的hog检测效果不如dlib的检测效果。一方面dlib采用的并非最原始的hog,而是fasthog,与hog相比,fhog是以ce...原创 2018-09-12 21:12:14 · 3509 阅读 · 1 评论 -
dlib标签制作
dlib的标签的数据格式如下:大多用于目标检测的标签的数据格式:(图片名 left_top_y left_top_x width height),如果用于dlib进行模型训练,那么就需要进行数据格式转换,下面就是标签的转换程序:# -*- coding: utf-8 -*-"""Created on Mon Sep 10 17:52:11 2018@author: A...原创 2018-09-10 21:10:16 · 649 阅读 · 2 评论 -
SVM的基本推导
1、SVM的作用对于给定的训练样本集D={(x1,y1), (x2,y2),… (xn,yn)},yi属于{-1,+1},希望能找出一个超平面,把不同类别的数据集分开,对于线性可分的数据集来说,这样的超平面有无穷多个,而最优的超平面即是分隔间距最大的中间那个超平面2、硬间隔最大化对于以上的KKT条件可以看出,对于任意的训练样本总有ai=0或者yif(xi) - 1=0即yi...原创 2019-03-14 00:02:45 · 2704 阅读 · 1 评论 -
图像处理之RGB转为HSV
从 RGB 到 HSL 或 HSV 的转换设 (r, g, b) 分别是一个颜色的红、绿和蓝坐标,它们的值是在 0 到 1 之间的实数。设 max 等价于 r, g 和 b 中的最大者。设 min 等于这些值中的最小者。要找到在 HSL 空间中的 (h, s, l) 值,这里的 h ∈ [0, 360)度是角度的色相角,而 s, l ∈ [0,1] 是饱和度和亮度,计算为:上面的理论也是从别人那里...原创 2018-02-07 14:53:07 · 16948 阅读 · 1 评论 -
高斯滤波c语言实现
高斯滤波是图像处理中最常见的一种滤波方式,高斯滤波能够对图像起到平滑作用,去除部分噪声对图像进一步处理带来的影响,常见的高斯模板一般为3*3或者为5*5,高斯滤波除了模板的大小带来影响外,还有一个正态分布方差sigma也会对高斯滤波起到很大的作用,sigma越大图像越模糊。二维高斯核的表达式为:/*功能: 二维高斯核生成//kernel:存储生成的高斯核//size: 核的大小/...原创 2018-03-06 20:04:37 · 8941 阅读 · 5 评论 -
标准Hough直线检测初探
标准hough变换初探原创 2017-07-31 21:21:56 · 527 阅读 · 0 评论 -
最大类间二值化
最大类间方差法是由日本学者大津于1979年提出的,是一种自适应的阈值确定的方法,又叫大津法,简称OTSU。它是按图像的灰度特性,将图像分成背景和目标2部分。背景和目标之间的类间方差越大,说明构成图像的2部分的差别越大,当部分目标错分为背景或部分背景错分为目标都会导致2部分差别变小。因此,使类间方差最大的分割意味着错分概率最小。对于图像I(x,y),前景(即目标)和背景的分割阈值记作T,属于前景的像...原创 2017-08-01 20:27:03 · 688 阅读 · 0 评论 -
matlab直线拟合RANSAC初探
RANSAC直线拟合初探原创 2017-07-27 15:10:56 · 2952 阅读 · 0 评论 -
实现你的kalman
实现你的kalman原创 2017-07-27 20:29:54 · 1286 阅读 · 1 评论 -
c语言实现轮廓标记
二值图像轮廓标记,实现了一次遍历完成图像的轮廓标记原创 2017-08-27 15:38:34 · 2586 阅读 · 0 评论 -
获取轮廓的最小外接矩形
计算轮廓的最小面积外接矩形原创 2017-08-27 16:16:03 · 6398 阅读 · 1 评论 -
RANSAC之opencv和C++实现
关于RANSAC的相关理论就不多说了,之前也写过一篇基于matlab实现的RANSAC博文:http://blog.csdn.net/yongjiankuang/article/details/76193004,本文基本也是基于他人的代码实现,只是稍作修改#ifndef RANSACLINE2D_H_#define RANSACLINE2D_H_#include #include原创 2018-01-07 15:16:17 · 5366 阅读 · 2 评论 -
RANSAC之c语言实现
关于RANSAC算法已经写过两篇博文,本篇主要是基于前两篇的相关理论实现的,同时这里实现的RANSAC实现了定点化。前两篇博文请参考:matlab实现ransac,opencv和c++实现ransac。若有不当之处,望指教,谢谢!typedef struct{ int x; int y;}point_t;typedef struct LineModel{ int mSl...原创 2018-01-07 15:23:42 · 2212 阅读 · 2 评论 -
kalman之c语言实现
kalman的文章之前也写过一篇,具体参考:kalman,本文主要是基于c的实现,若有不当之处,望指教,谢谢!typedef struct image_double{ double* pix; unsigned int w; unsigned int h;}*image_double_ptr;#ifndef _KALMAN_H_#define _KALMAN_H_...原创 2018-01-07 15:32:04 · 2762 阅读 · 2 评论 -
轮廓的凸包寻找
本文轮廓凸包寻找主要是基于graham算法来实现的,具体的理论知识大家可以网上搜索下一大堆,这里盗用下他人的一张比较好描述该算法的图片:下面直接上代码:struct ptInfo{ point_t* pt; int size;};//符号函数int signPoint(float x);//计算叉积int crossPoint(const point_t a, const ...原创 2017-08-27 16:00:37 · 1127 阅读 · 0 评论 -
标准hough变换的具体实现
hough直线检测的原理就是采用积分图来统计直线上响应的点数,从而通过设定阈值获取响应较大的直线作为最终的直线,关于太具体的理论可自行查阅。关于hough直线检测之前也写过一篇博文hough直线检测初探,本博文也类似于之前博文,若有不当之处,望指教,谢谢!#ifndef _HOUGH_JL_H_#define _HOUGH_JL_H_#include <iostream>#in...原创 2018-01-07 15:50:51 · 1073 阅读 · 0 评论