
什么是直方图呢?通过直方图你可以对整幅图像的灰度分布有一个整体的了解。直方图的x 轴是灰度值(0 到255),y 轴是中具有同一个灰度值的点的数目。
直方图其实就是对图像的另一种解释。一下图为例,通过直方图我们可以对图像的对比度,亮度,灰度分布等有一个直观的认识。几乎所有的图像处理软件都提供了直方图分析功能。下图来自Cambridge in Color website,强烈推荐你到这个网站了解更多知识。
让我们来一起看看这幅和它的直方图吧。(要记住,直方图是根据灰度图像绘制的,而不是彩色图像)。直方图的左边区域像是了暗一点的像素数量,右侧显示了亮一点的像素的数量。从这幅图上你可以看到灰暗的区域比两的区域要大,而处于中间部分的像素点很少。
BINS:上面的直方图显示了每个灰度值对应的像素数。如果像素值为0到255,你就需要256 个数来显示上面的直方图。但是,如果你不需要知道
每一个像素值的像素点数目的,而只希望知道两个像素值之间的像素点数目怎么办呢?举例来说,我们想知道像素值在0 到15 之间的像素点的数目,接着
是16 到31,…,240 到255。我们只需要16 个值来绘制直方图。OpenCV Tutorials on histograms中例子所演示的内容。
那到底怎么做呢?你只需要把原来的256 个值等分成16 小组,取每组的总和。而这里的每一个小组就被成为BIN。第一个例子中有256 个BIN,第二个例子中有16 个BIN。在OpenCV 的文档中用histSize 表示BINS。
DIMS:表示我们收集数据的参数数目。在本例中,我们对收集到的数据只考虑一件事:灰度值。所以这里就是1。RANGE:就是要统计的灰度值范围,一般来说为[0,256],也就是说所有的灰度值
蓝色阴影表示低像素计数,而红色阴影表示大像素计数(即,2D图形中的峰值)
直方图均衡通过“拉伸”像素的分布来改善图像的对比度。
应用直方图均衡会将峰值拉向图像的角落,从而改善图像的全局对比度。直方图均衡适用于灰度图像
执行直方图均衡仅使用单个函数完成:cv2equalizeHist(image)它接受一个单一的参数,灰度图像,我们要执行直方图均衡。
在给定图像的直方图中,我们得到图像中出现的所有像素值的频率。#include <stdioh> #include <conioh> int whichshade(int pixelvalue) { int i=0; for(i=0;i<256;i++) if(pixelvalue==i) break; return i; } //这个方法以列表方式显示直方图 //你能够把这些值传递给图形软件 //来查看其图形。我使用Excel来绘制曲线 void displaypixelstats(int pixelcounts[]) { int i=0; for(i=0;i<256;i++) printf("Gray Scale Shade : %d Count : %d\n",i,pixelcounts[i]); } int main() { char file[20]; int pixelvalue; //图像计数器容器 int pixelcounts[255]; FILE fp; int i; //初始化容器 for(i=0;i<256;i++) pixelcounts[i]=0; printf("Enter the gray scale image file name :"); fflush(stdin); scanf("%s",file); fp = fopen(file,"r"); while(!feof(fp)) { fscanf(fp,"%d",&pixelvalue); pixelcounts[whichshade(pixelvalue)]++; } fclose(fp); displaypixelstats(pixelcounts); getch(); return 0; }
OpenCV中分析绘制直方图并没有直接可用的函数,以下是绘制直方图统计的一种实现。
paint_histogramh:
paint_histogramcpp如下所示:
main函数调用如下:
执行结果如下:
内容来自于书籍。
[m,n]=size(I); %I 为灰度图像
h=zeros(1,256);
for i=1:m
for j=1:n
h(I(i,j))=h(I(i,j))+1;
end
end
%%a为你的二值化矩阵
[m,n]=find(a==1);
zuobiao=[m,n];
%%结果存在D盘,名字为aaa的excel中
xlswrite('D:\aaa',zuobiao);
以上就是关于opencv入门9:直方图-histogram全部的内容,包括:opencv入门9:直方图-histogram、如何得到256级灰度图像的直方图、计算绘制图像灰度直方图等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)