图像的灰度直方图(H是图像a.bmp的数据矩阵)

imhist(H);%显示a的直方图

histeq(H); %将图像a进行直方图均衡化

adapthisteq(H); %将图像a进行直方图均衡化

imhist函数只能处理二维数据,因此处理RGB图像,需先转化成灰度图像,显示灰度直方图。

例1:显示图像灰度直方图并进行直方图均衡化。

H=rgb2gray(imread('peppers.png'));
subplot(3,2,1);
imshow(H);
title('原图');
subplot(3,2,2);
imhist(H);
title('原图直方图');
subplot(3,2,3);
H1=adapthisteq(H);
imshow(H1);
title('adapthisteq均衡后图');
subplot(3,2,4);
imhist(H1);
title('adapthisteq均衡后直方图');
subplot(3,2,5);
H2=histeq(H);
imshow(H2);
title('histeq均衡后图');
subplot(3,2,6);
imhist(H1);
title('histeq均衡后直方图');

例2: 自己设计程序显示直方图,并实现直方图均衡化。

直方图均衡化是直方图修正技术的一种。一幅均匀量化的自然图像的灰度直方图通常在低灰度区域的频率较大,这样的图像较暗,区域中的细节常常看不清楚。

直方图均衡化可使得图像的灰度间距拉大或者使灰度分布均匀,从而增加了反差,使图像细节清晰,达到图像增强的目的。

x=rgb2gray(imread('peppers.png'));
[m,n]=size(x);
p=zeros(1,256);
for i=0:255
p(i+1)=length(find(x==i))/(m*n);
end
subplot(2,2,1);
bar(0:255,p,'b');
title('原图直方图');
subplot(2,2,2);
imshow(x);
title('原图'); s=zeros(1,256);
for i=1:256
for j=1:i
s(i)=p(j)+s(i);
end
end a=round(s*255);
for i=0:255
GPeq(i+1)=sum(p(find(a==i)));
end
subplot(2,2,3);
bar(0:255,GPeq,'b')
title('均衡化后的直方图');
b=x;
for i=0:255
b(find(x==i))=a(i+1);
end
subplot(2,2,4);
imshow(b)
title('均衡化后图像');

Matlab图像直方图相关函数的更多相关文章

  1. 【matlab】图像直方图

    使用imhist函数(要先用rgb2gray转化为灰度图像) 利用matlab计算图像直方图函数为imhist() 具体用法: imhist( i );直接显示图像i的灰度直方图: imhist(i, ...

  2. OpenCV成长之路(5):图像直方图的应用

    正如第4篇文章所说的图像直方图在特征提取方面有着很重要的作用,本文将举两个实际工程中非常实用的例子来说明图像直方图的应用. 一.直方图的反向映射. 我们以人脸检测举例,在人脸检测中,我们第一步往往需要 ...

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

    OpenCV成长之路:图像直方图的应用 2014-04-11 13:57:03 标签:opencv 图像 直方图 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否 ...

  4. Matlab实现直方图均衡化

    G=imread('aini555.jpg'); I=rgb2gray(G); J=histeq(I); %直方图均衡化,这一个函数就可以做到均衡化的效果 figure, subplot(),imsh ...

  5. matlab图像处理程序大集合

    1.图像反转 MATLAB程序实现如下:I=imread('xian.bmp');J=double(I);J=-J+(256-1);                 %图像反转线性变换H=uint8( ...

  6. OpenCV成长之路(4):图像直方图

    一.图像直方图的概念 图像直方图是反映一个图像像素分布的统计表,其实横坐标代表了图像像素的种类,可以是灰度的,也可以是彩色的.纵坐标代表了每一种颜色值在图像中的像素总数或者占所有像素个数的百分比. 图 ...

  7. matlab图像类型转换以及uint8、double、im2double、im2uint8和mat2gray等说明

    转自:http://blog.csdn.net/fx677588/article/details/53301740 1. matlab图像保存说明 matlab中读取图片后保存的数据是uint8类型( ...

  8. Matlab图像彩色转灰色

    Matlab图像彩色转灰色 时间:2014年5月7日星期三 网上找的程序.实现图像彩色转灰色: I1=imread('C:\Users\Yano\Desktop\matlab\test1\4.jpg' ...

  9. OpenCV成长之路:图像直方图

    http://ronny.blog.51cto.com/8801997/1394115 2014-04-11 13:47:27 标签:opencv 直方图 统计表 原创作品,允许转载,转载时请务必以超 ...

随机推荐

  1. 【Tarjan,LCA】【3-21个人赛】【problemD】

    Problem D Time Limit : 6000/3000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total Sub ...

  2. win7启动后报丢失nscmk.dll解决解决方式

    1.根据当前计算机选择下载64位或者32位nscmk.dll 2.拷贝nscmk.dll到相路径(32位:%windir%\system32\:64位:%windir%\SysWOW64\nscmk. ...

  3. 解决VS2010批量替换时经常由于内存较低而导致VS2010自动关闭的问题

    尊重原著作:本文转载自http://www.cnblogs.com/Sharping/p/3165527.html 情况描述 在使用VS2010 开发Web应用程序的时候,批量替换时经常卡死关闭. 一 ...

  4. gcc 编译和链接

    1.现在对两个文件生成可执行文件 //thanks.c #include <stdio.h> int main(void) { printf("Hello World\n&quo ...

  5. struts2源码调试环境的搭建

    源码之前,了无秘密. 说一句逼格很高的话来镇镇场子. 这两天在看陆舟的<Struts2技术内幕>,一边看脑子一边冒出四个字:相见恨晚.极力推荐想了解Struts2的人看看这本书,之前一直在 ...

  6. jQuery的实用小技巧

    1. 禁止右键点击 $(function(){ $(document).bind('contextmenu', function(e){ return false; }) }) 2. 隐藏搜索文本框文 ...

  7. linux 驱动模块 内核编译环境

    目录(?)[+] Linux设备驱动Hello World程序介绍 如何编写一个简单的linux内核模块和设备驱动程序.我将学习到如何在内核模式下以三种不同的方式来打印hello world,这三种方 ...

  8. UITableViewCell性能优化

    5.UITableViewCell性能优化 > 定义一个循环利用标识 static NSString *ID = @"C1"; > 从缓存池中取出可循环利用的cell ...

  9. 打开网页自动弹出QQ临时会话 (打开网站弹出QQ聊天) qq.js文件代

    eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35 ...

  10. 二叉查找树的Insert和Delete操作

    struct TreeNode{ SearchTree Left; SearchTree Right; ElementType Ele; }; /*递归一定有出口*/ /*递归代码就是要重复使用*/ ...