图像处理
大唐游子
这个作者很懒,什么都没留下…
展开
-
调色板概念
原文地址:http://vipbase.net/ipbook/chap01.htm我们先来说说三元色RGB概念。我们知道,自然界中的所有颜色都可以由红、绿、蓝(R,G,B)组合而成。有的颜色含有红色成分多一些,如深红;有的含有红色成分少一些,如浅红。针对含有红色成分的多少,可以分成0到255共256个等级,0级表示不含红色成分;255级表示含有100%的红色成分。同样,绿色和蓝色也被分转载 2009-10-07 16:00:00 · 1303 阅读 · 0 评论 -
图像中值滤波实现
#include "opencv2/imgproc/imgproc.hpp"#include "opencv2/highgui/highgui.hpp"#include #include using namespace cv;using namespace std;const int WINDOW_SIZE = 1;void MyGetMedian(ucha原创 2013-02-18 22:06:40 · 1371 阅读 · 0 评论 -
efficient median filtering及其实现
参考:桑卡,《图像处理分析与机器学习》中值滤波每次都需要对kernel内的像素进行排序,效率较低。kernel每次向右移动时,最左一列消失,同时增加最右一列,所以可以对kernel内的像素建立一个直方图,计算median value以及小于等于median value的像素个数nm。kernel每次更新时,重新计算median value和nm。算法如下: #include "原创 2013-02-27 23:43:24 · 1444 阅读 · 0 评论 -
TWO-PASS连通域标记实现
#include "opencv2/imgproc/imgproc.hpp"#include "opencv2/highgui/highgui.hpp"#include #include #include using namespace std;using namespace cv;const int max_size = 1000;int parent[max_size] =原创 2013-11-26 21:48:16 · 5380 阅读 · 0 评论 -
OpenCV实现resize和crop当前文件夹下所有图片
使用方法:从命令行指定resize的width和height,输入命令"resize_imgages width height"#include "opencv2/imgproc/imgproc.hpp"#include "opencv2/highgui/highgui.hpp"#include #include #include using namespace cv;us原创 2014-01-21 21:40:11 · 12845 阅读 · 0 评论 -
从摄像头中检测脸并保存图像
改写自:http://docs.opencv.org/doc/tutorials/objdetect/cascade_classifier/cascade_classifier.html #include "opencv2/objdetect/objdetect.hpp" #include "opencv2/highgui/highgui.hpp" #include "opencv2/im原创 2014-01-21 23:03:09 · 2029 阅读 · 0 评论 -
通过傅里叶变换方法求图像卷积-OpenCV实现
在图像处理中经常会遇到各种滤波(平滑、锐化)的情况,基本方法都是将图像与一个核进行卷积实现。而卷积定理指出,两个函数的卷积的傅里叶变换等于各自的傅里叶变换的乘积,即:[1]那么,两个函数的卷积可以通过如下方式得到,对两个函数傅里叶变换的乘积做傅里叶反变换,即:[1]在进行卷积运算时,一般是将核沿着图像从左到右从上到下计算每一个像素处与核卷积后的值,这样的计算量较大,原创 2014-01-28 22:14:45 · 17704 阅读 · 2 评论 -
利用facerec代码包中的eigenface进行人脸识别
1. 一个非常好的人脸识别代码包:https://www.github.com/bytefish/facerechttps://github.com/bytefish/facerecognition_guidehttp://bytefish.de/blog/eigenfaces/http://www.bytefish.de/blog/fisherfaces/ 第一个网址原创 2014-02-07 23:00:43 · 7624 阅读 · 0 评论 -
Gamma校正及其实现
图2中左图为原图,中图为gamma = 1/2.2在校正结果,原图中左半侧的灰度值较高,右半侧的灰度值较低,经过gamma = 1/2.2校正后(中图),左侧的对比度降低(见胡须),右侧在对比度提高(明显可以看清面容),同时图像在的整体灰度值提高。右图为gamma = 2.2在校正结果,校正后,左侧的对比度提高(见胡须),右侧在对比度降低(面容更不清楚了),同时图像在的整体灰度值降低。原创 2014-03-09 13:11:15 · 35344 阅读 · 1 评论 -
Gamma校正及其OpenCV实现
参考:[1]http://www.cambridgeincolour.com/tutorials/gamma-correction.htm[2]http://en.wikipedia.org/wiki/Gamma_correction 一、什么是Gamma校正?Gamma校正是对输入图像灰度值进行的非线性操作,使输出图像灰度值与输入图像灰度值呈指数关系:[2]这个指数即为G原创 2013-01-01 17:05:38 · 43667 阅读 · 8 评论 -
eye closure detection using flandmark toolbox
eye_closure_detection.h#ifndef _EYE_CLOSURE_DETECTION_H#define _EYE_CLOSURE_DETECTION_H#include #include #include #include using namespace cv;using namespace std;extern void HorizonPr原创 2014-03-28 22:37:01 · 1705 阅读 · 0 评论 -
判断LBP值是否为uniform
LBP值是0~255之间的数值,uniform指的是其二进制形式的翻转次数是否超过2次,比如"00001110" 为unifom,而“00110011”不是uniform.#include using namespace std;//#define _DEBUG_INFOvoid printBinary(const unsigned char val){ for(int原创 2014-03-20 22:46:30 · 1397 阅读 · 0 评论 -
利用flandmark进行face alignment
flandmark是一个检测脸部特征点的开源代码库(http://cmp.felk.cvut.cz/~uricamic/flandmark/), 利用flandmark可以检测到原创 2014-04-10 21:45:29 · 9535 阅读 · 1 评论 -
OpenCV实现Gabor滤波(2)
对上一版的Gabor滤波代码进行了修改:1) jiang原创 2014-04-26 15:24:16 · 12579 阅读 · 6 评论 -
给图像添加高斯噪音
通过Box-Muller变换可以产生Gaussian噪音 Box-Muller变换:假设随机变量x1, x2来自独立的处于[0,1]之间的均匀分布,则经过下面两个式子产生的随机变量z1, z2服从标准高斯分布:原创 2014-06-17 22:18:36 · 26293 阅读 · 4 评论 -
用opencv检测convexity defects
一 概念:Convexity hull, Convexity defects 如上图所示,黑色的轮廓线为convexity hull, 而convexity hull与手掌之间的部分为convexity defects. 每个convexity defect区域有四个特征量:起始点(startPoint),结束点(endPoint),距离convexity hull最远点(原创 2014-08-05 23:14:08 · 27504 阅读 · 2 评论 -
利用OpenCV检测手掌(palm)和拳头(fist)
思路:利用训练好的palm.xml和fist.xml文件,原创 2014-08-13 22:40:00 · 12074 阅读 · 9 评论 -
图像放大并进行BiCubic插值
BiCubic插值原理:构造BiCubic函数:其中,a取-0.5.[source: http://en.wikipedia.org/wiki/Bicubic_interpolation]BiCubic函数具有如下形状:[source: R. Keys, (1981). "Cubic convolution interpolation for digital imag原创 2013-01-21 23:25:03 · 25239 阅读 · 5 评论 -
图像放大并用双线性插值
设x0处的函数值为f(x0), x1处的函数值为f(x1), 设x0 f(x) = f(x0)*(x1-x)/(x1-x0) + f(x1)*(x-x0)/(x1-x0) 实现代码:#include "opencv2/imgproc/imgproc.hpp"#include "opencv2/highgui/highgui.hpp"#include #include原创 2013-01-15 21:32:13 · 2013 阅读 · 0 评论 -
256位图转为灰度位图
核心代码: //将256色位图改为灰度位图 LPRGBQUAD lpquad = (LPRGBQUAD)(pDIB+sizeof(BITMAPINFOHEADER)); int Intensity = 0; for(int k = 0; k { Intensity = (int)(lpquad[k].rgbRed + lpquad[k].rgbGreen + lpquad[k].rgb原创 2009-10-07 15:46:00 · 1447 阅读 · 0 评论 -
高斯模糊
原文地址:http://zh.wikipedia.org/w/index.php?title=%E9%AB%98%E6%96%AF%E6%A8%A1%E7%B3%8A&oldid=8817647 高斯模糊是在Adobe Photoshop、GIMP以及Paint.NET等图像处理软件中广泛使用的处理效果,通常用它来减小图像噪声以及降低细节层次。这种模糊技术生成的图像的视觉效果是好像经过一个半透转载 2009-10-10 11:36:00 · 1611 阅读 · 0 评论 -
[转]标记法进行图像分割
代码原创:梁毅军(西安交大图像所)liang.yijun@live.cnvoid Label(byte [,] f, int x,int y,byte L)//8邻域递归标记 { f[x,y] = L; if (f[x+1,y]==255) Label(f,x+1,y,L); if (f[x-1,y]==255) Label(f,x-1,y,L); if (f[原创 2009-11-06 15:31:00 · 1440 阅读 · 0 评论 -
迭代的(最优的)阈值选择法进行图像分割
这种方法假设图像中出现了两种主要的灰度区域。算法描述:迭代的(最优的)阈值选择:1、假设没有有关物体确切位置的知识,作为第一步近似,考虑图像四角含有背景像素而其他部分含有物体像素。2、在第t步,分别计算背景和物体的灰度均值和,其中在第t步将图像分割为背景和物体的阈值是,它是在前一步确定的[公式(5.9)]:=, = (5.8)3原创 2009-11-06 12:36:00 · 20478 阅读 · 0 评论 -
基于先验知识修复图像裂缝和毛刺
void Label(byte [,] f, int x,int y,byte L)//递归标记算法 { f[x,y] = L; if (f[x+1,y]==255) Label(f,x+1,y,L); if (f[x-1,y]==255) Label(f,x-1,y,L); if (f[x,y+1]==255) Label(f,x,y+1,L); if (原创 2009-11-07 18:51:00 · 2422 阅读 · 1 评论 -
阈值法进行边缘检测
void main() { byte [,]f = LoadImg(); if (f==null) return; ShowImg("",f); int w = f.GetLength(0); int h = f.GetLength(1); for(int i = 0; i for(int j = 0; j原创 2009-10-30 20:49:00 · 2244 阅读 · 0 评论 -
基于Laplacian算子的图像锐化及非锐化屏蔽(unsharp masking)
基于Laplacian算子的图像锐化:图像锐化(sharpening)[Rosenfeld and Kak 82]的目标是使边缘更陡峭,锐化的图像是供人观察的。锐化的输出图像f是根据下式从输入图像g得到的:f(i,j) = g(i,j) - CS(i,j) (4.40)其中C是反映锐化强度的正系数,S(i,j)是图像函数锐化程度原创 2009-11-11 14:47:00 · 7079 阅读 · 0 评论 -
分割图像,提取信封上的邮编
1、题目:分割图像,提取信封上的邮编。2、算法原理:原创:梁毅军(西安交大图像所,liang.yijun@live.cn)(1) 线框提取:输入f(x,y)为彩色图像,输出g(x,y)为灰色图像。g(x,y) = T[f(x,y).R, f(x,y).B, f(x,y).R] T为变换函数T(R, G, B) = max{R- (G+B)/2 , 0};经过T原创 2009-11-14 13:03:00 · 2406 阅读 · 2 评论 -
Gauss平滑
代码原创:西安交大图像所 梁毅军 liang.yijun@live.cn //***********************Gauss平滑_加噪声.txt************************//Gauss平滑//******************************************************************void Filter2D(原创 2009-12-17 23:36:00 · 1422 阅读 · 2 评论 -
窗口法估计瞳孔中心位置
1 题目窗口法估计瞳孔中心位置。 2 算法原理 资料来源:田启川, 潘泉, 梁彦等. 瞳孔中心指导的虹膜边界快速定位算法. 系统仿真学报, 第18卷第17期, 2006年7月. 3 实现代码 /**Get postion of pupil center with window**by LiChengyu, 2010-1-5*/void m原创 2010-01-05 23:58:00 · 1750 阅读 · 1 评论 -
获取多个圆的圆心
原始图片: 图A 图B两种方法:第一种方法:扫描整个图像,对于每个圆形区域,最先扫描到的点应为其顶点A,如图1所示,获取顶点A和底部点B的坐标,AB的中点即为圆心坐标。同时将该圆形区域的灰度值置为其他值,这样在扫描下一行时就不会在扫描到该圆。原创 2010-08-10 13:13:00 · 3858 阅读 · 1 评论 -
为raw数据添加图像头,并保存为bmp图像
// Test.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include "stdio.h"#include "Windows.h"unsigned char *pBmpBuf;//读入图像数据的指针int bmpWidth;//图像的宽int bmpHeight;//图像的高RGBQUAD *pColorTable;//颜色表指针int biBi原创 2010-12-01 09:54:00 · 1959 阅读 · 0 评论 -
判断连续多帧图像的状态
在回调函数中获取图像,但有时获取不到图像,当连续多帧(这里是30)得不到图像时,进行复位。如下所示:int CallBackFunc(){ img = CaptureImage(); if( img == NULL ) { nBadFrame ++; } if( nBadFrame >= 30 ) {原创 2012-09-18 00:10:24 · 2799 阅读 · 0 评论 -
距离变换
出处:桑卡, 《图像处理分析与机器视觉》 计算全局图像中各个像素点对子图像的距离。ALALALPAL Mask 1 BRPBRBRBR原创 2012-09-23 11:00:30 · 7055 阅读 · 1 评论 -
彩色直方图均衡的OpenCV实现
参考:http://blog.csdn.net/abcjennifer/article/details/7428737原理:将RGB空间转换为YUV(YCrCb)空间,对Y分量进行直方图均衡,再转换成RGB空间。转换成RGB空间主要为了方便用imshow显示,imshow好像无法直接正常显示YUV格式的图像(?待考)代码:#include "opencv2/imgproc/imgpro原创 2012-12-25 22:01:03 · 3906 阅读 · 1 评论 -
FaceRecognizer
1. 总体工作流程 1.1 主要成员及作用 FaceTrackertrain_face_tracker; // FaceTracker类,在训练阶段跟踪人脸,采集样本 FaceTrackerpredict_face_tracker; // FaceTracker类,在识别阶段跟踪人脸,采集样本 FaceRecogni转载 2014-12-07 16:16:20 · 4245 阅读 · 1 评论