图像处理大型科普——图像直方图

图像处理大型科普——图像直方图



偶尔跟在浙大读研的湖大一姐谈起轮廓识别,她正在做一个能把衣服分类成不同款式的应用,衣服平摊好,然后用手机一扫,马上就能告诉你这是T-SHIRT还是裙子,什么?你敢说这玩意鸡肋?T-SHIRT和裙子当然容易分别,但那些

莲蓬裙、连衣裙、连体裙、半截裙、背带裙、连体裤、热裤、短裤、超短裤、齐X裤、打底裤、靴裤、吊带裤你真的分得清楚么?

分不清的先去一旁罚歌一首

继续说正事

学姐大概是这么做的,先灰度,然后获取高频分量,然后根据高频分量二值化,然后获取轮廓的点集,然后通过直方图跟数据库里的预设模型数据做相似度匹配,最后匹配度高的是结果。

慢着,直方图能做匹配??

话刚码完,学姐刷的一下甩我一篇英文论文:“一起看看?”(论文的链接甩这:Shape-context.pdf

在度娘、谷神以及有道哥的帮助下大致理解了文中的意思,也让我对直方图这个概念有了更深的认识

对于刚刚接触matlab图像处理的来说,一谈起直方图马上就想到了用imhist()绘制图像的直方图

又或者是用histeq()均衡直方图,让图片对比度更加高,甚至去除图片中的白噪(之前也写过一篇去除雾霾白噪的:MATLAB图像处理:一分钟去除图片中的雾霾

尽管matlab中的直方图有很多现成的应用,但千万别把直方图的定义限制在这几个函数里了,难不成人家Word\Excel里的直方图就不是直方图了么?

联想到各种报表、文案中的直方图,我觉得我们之所以使用直方图,主要是希望能有分类统计的功能,

对于图像处理中的直方图,对像素进行分类统计是我们最常使用的一种方式

于是得到灰度值的直方图:

关于这张图,也是有很多地方可以用的到的

比如说我们可以利用图像的细长峰值判断图像的主要信息集中在哪个灰度上,

利用图像两峰之间的面积判断背景色在哪个灰度上,

也可以用峰谷判断噪点所在的灰度,

同样可以利用该图中的灰度期望给出一个理想的二值化分界值。

甚至在手绘(最近有点迷上painter手绘。。。)中决定绘画中的主色调,背景色,和高亮点所对应的色彩范围,大大减少配色的难度。

倘若把这个直方图量化开来,变成一个size = 256的[gray_value ,count_num]形式的矩阵,完全可以把它当做这张图片特有的指纹,一个256维的向量,无论这张图片旋转多少角度,这个向量都不会改变,是的,终于绕回来了,任意一张图片都可以对应这样的一个向量,并且维度都是256哦,至于向量,管他多少维的,都是一条直线,那么两条直线的相似度不就是直线的夹角咯,(此处不贴公式,想一探究竟的请自行百度“n维向量的夹角”)哈哈,这不就完美的解决了图片旋转前后的匹配的问题么~~

做事要严谨,我一开始的确以为这就是直方图的匹配方式的,不过仔细一想,256维的向量角度。。。。。这计算量,这精确度,还得经受环境光源的影响,这么苛刻的匹配环境用在识别衣服款式上,几乎是得不到回报的

回到上文中提到的论文中,还得怪我们对直方图的认识太肤浅狭隘,我们一直都在灰度值的直方图中打转转,用统计的思想去碰概率,然而直方图不仅是统计,还可以分类,不仅是灰度值的直方图,也可以是别的什么的直方图啊。



前方高能,集中注意

这里特别提到的,是用于分类 轮廓点集 的一种直方图:

a和b是两张图的轮廓点集,c是一个坐标系,把一个圆按照离圆心的距离、和正北的角度两个指标分成60个块(角度分成12类区域,距离分成5类区域,12*5=60),然后遍历点集的每一个点,以当前遍历的点为C坐标的圆心,把其他点按60个区域划分,变成一个size = 60的素组,保存着每个块中的轮廓点数量,现在每个点都对应了一个关于其他点的直方图,就像d、e、f三张图一样,60个小方块,点的数量越多,颜色越深。

最后一步,比较a、b两两点间的相似度,获取匹配度最高的那个点与之对应,最终得运行结果就像图g中一样,无论图像旋转,缩放,还是光源的角度强弱,都不会对结果造成有效影响,最大程度上保证了匹配的精度。

这是一个很好的例子,来说明直方图在分类上的特别能力,我觉得在之后的应用中, 我们也可以通过制定分类指标的方式,把抽象的数据通过直方图分成大类,再进行简单的统计运算,最大化的发挥直方图在图相处理领域分类统计的作用。

希望大家通过这篇博文可以对身边的事物有更多奇葩的使用想法和理解方式,老是用别人的东西也没意思噻,反正这老外的思维我是服了

OVER~~

时间: 2024-10-10 15:38:34

图像处理大型科普——图像直方图的相关文章

图像直方图与直方图均衡化

图像直方图与直方图均衡化 图像直方图以及灰度与彩色图像的直方图均衡化 图像直方图: 概述: 图像的直方图用来表征该图像像素值的分布情况.用一定数目的小区间(bin)来指定表征像素值的范围,每个小区间会得到落入该小区间表示范围的像素数目. 图像直方图图形化显示不同的像素值在不同的强度值上的出现频率,对于灰度图像来说强度范围为[0~255]之间,对于RGB的彩色图像可以独立显示三种颜色的图像直方图. 同时直方图是用来寻找灰度图像二值化阈值常用而且是有效的手段之一,如果一幅灰度图像的直方图显示为两个波

OpenCV成长之路:图像直方图

http://ronny.blog.51cto.com/8801997/1394115 2014-04-11 13:47:27 标签:opencv 直方图 统计表 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://ronny.blog.51cto.com/8801997/1394115 一.图像直方图的概念 图像直方图是反映一个图像像素分布的统计表,其实横坐标代表了图像像素的种类,可以是灰度的,也可以是彩色的.纵坐标代表了每一种

OpenCV入门教程之四 图像直方图

一.图像直方图的概念 图像直方图是反映一个图像像素分布的统计表,其实横坐标代表了图像像素的种类,可以是灰度的,也可以是彩色的.纵坐标代表了每一种颜色值在图像中的像素总数或者占所有像素个数的百分比. 图像是由像素构成,因为反映像素分布的直方图往往可以作为图像一个很重要的特征.在实际工程中,图像直方图在特征提取.图像匹配等方面都有很好的应用.  二.利用OpenCV计算图像的直方图 OpenCV中计算图像直方图像函数是calcHist,它的参数比较多,下面分析一下它的接口和用法. void calc

图像处理复习1——图像基础和空域增强

图像处理复习 CH2 图像基础 2.1 噪声 噪声定义为妨碍人们感觉器官对所接收的信源信息理解的因素,噪声有以下几个常见分类: (1)按统计理论分类 平稳噪声:统计特性不随时间变化 非平稳噪声:统计特性随时间变化 (2)按频谱形状分类 白噪声:频谱均匀分布 三角噪声:频谱与频率平方成正比 (3)按幅度分布形状分类:高斯噪声.雷利噪声 (4)按噪声与信号关系分类:加性噪声.乘性噪声 处理噪声时往往假设噪声是加性噪声并且噪声和信号是相互统计独立的 2.2 成像基础模型 假设投影成像有以下模型: 则由

iOS 图像处理-剪裁图像

解决问题:按照某一长宽比例,剪裁图片的上部和下部,保留中间的内容.当然也可以自定义需要剪裁留下的区域 前提:需要添加Framework:CoreGraphics.framework 代码: - (UIImage*) crop:(UIImage*)theImage{ // Get size of current image CGSize size = [theImage size]; // Create rectangle that represents a cropped image CGFlo

图像直方图均衡化增强opencv与C语言版

本文实现彩色图像的全局直方图均衡.分别对R/G/B三通道均衡,读写图片采用OpenCV.代码如下: #include <opencv2/opencv.hpp> //#include <cv.h> //#include <cxcore.h> //#include <highgui.h> #include <time.h> #include <stdio.h> #include <math.h> #include "

OpenCV成长之路:图像直方图的应用

2014-04-11 13:57:03 标签:opencv 图像 直方图 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://ronny.blog.51cto.com/8801997/1394118 正如第4篇文章所说的图像直方图在特征提取方面有着很重要的作用,本文将举两个实际工程中非常实用的例子来说明图像直方图的应用. 一.直方图的反向映射. 我们以人脸检测举例,在人脸检测中,我们第一步往往需要先提取图像中皮肤区域来缩小人脸的检

图像直方图均衡化(C#)

关于图像直方图均衡化的原理和步骤先不作讨论,我就看看代码吧. private Bitmap picequalization(Bitmap basemap, int width, int height) { Bitmap retmap = new Bitmap(basemap, width, height); int size = width * height; int[] gray = new int[256]; double[] graydense = new double[256]; for

OpenCV入门教程之五 图像直方图的应用

正如第4篇文章所说的图像直方图在特征提取方面有着很重要的作用,本文将举两个实际工程中非常实用的例子来说明图像直方图的应用. 一.直方图的反向映射 我们以人脸检测举例,在人脸检测中,我们第一步往往需要先提取图像中皮肤区域来缩小人脸的检测范围,这一般获得皮肤的颜色范围还需要定义阈值并不断的调整,实际中参数太多而不容易控制. 这里我们就可以考虑用直方图的反射映射. 1,收集人脸皮肤样本. 2,拼合样本并计算其颜色直方图. 3,将得到的样本颜色直方图反射映射到待检测的图片中,然后进行阈值化即可. 这里为