基于matlab的直方图均衡化代码
2014-12-12 23:50
218 查看
基于matlab的直方图均衡化代码
2007-04-15 20:15
clear all
%一,图像的预处理,读入彩***像将其灰度化
PS=imread('1.jpg'); %读入JPG彩***像文件
imshow(PS) %显示出来
title('输入的彩色JPG图像')
imwrite(rgb2gray(PS),'PicSampleGray.bmp'); %将彩***片灰度化并保存
PS=rgb2gray(PS); %灰度化后的数据存入数组
%二,绘制直方图
[m,n]=size(PS); %测量图像尺寸参数
GP=zeros(1,256); %预创建存放灰度出现概率的向量
for k=0:255
GP(k+1)=length(find(PS==k))/(m*n); %计算每级灰度出现的概率,将其存入GP中相应位置
end
figure,bar(0:255,GP,'g') %绘制直方图
title('原图像直方图')
xlabel('灰度值')
ylabel('出现概率')
%三,直方图均衡化
S1=zeros(1,256);
for i=1:256
for j=1:i
S1(i)=GP(j)+S1(i); %计算Sk
end
end
S2=round((S1*256)+0.5); %将Sk归到相近级的灰度
for i=1:256
GPeq(i)=sum(GP(find(S2==i))); %计算现有每个灰度级出现的概率
end
figure,bar(0:255,GPeq,'b') %显示均衡化后的直方图
title('均衡化后的直方图')
xlabel('灰度值')
ylabel('出现概率')
%四,图像均衡化
PA=PS;
for i=0:255
PA(find(PS==i))=S2(i+1); %将各个像素归一化后的灰度值赋给这个像素
end
figure,imshow(PA) %显示均衡化后的图像
title('均衡化后图像')
imwrite(PA,'PicEqual.bmp');
用imadjust函数
imadjust:调整图像的强度值或颜色用法形式:
J = imadjust(I)
J = imadjust(I,[low_in; high_in],[low_out; high_out])
J = imadjust(I,[low_in; high_in],[low_out; high_out],gamma)
newmap = imadjust(map,[low_in; high_in],[low_out; high_out],gamma)
RGB2 = imadjust(RGB1,...)
用法说明:
J = imadjust(I)将灰度图像I中的亮度值映射到J中的新值并使1%的数据是在低高强度和饱和,这增加了输出图像J的对比度值;
此用法相当于imadjust(I,stretchlim(I)).
J = imadjust(I,[low_in; high_in],[low_out; high_out]) 将图像I中的亮度值映射到J中的新值,即将low_in至hige_in之间的值映射到low_out至high_out之间的值。low_in以下与high_in以上的值被剪切掉了,也就是说,low_in以下的值映射到low_out,high_in以上的值映射到high_out。它们都可以使用空的矩阵[],默认值是[0 1]。
J = imadjust(I,[low_in; high_in],[low_out; high_out],gamma) 将图像I中的亮度值映射到J中的新值,其中gamma指定描述值I和值J关系的曲线形状。如果gamma小于1,此映射偏重更高数值(明亮)输出,如果gamma大于1,此映射偏重更低数值(灰暗)输出,如果省略此参数,默认为1(线性映射).
newmap = imadjust(map,[low_in; high_in],[low_out; high_out],gamma)调整索引***像的调色板map。如果low_in, high_in, low_out, high_out和gamma都是标量,那么对r,g,b分量同时都做此映射。对于每个颜色分量都有唯一的映射,当low_in和high_in同时为1*3向量或者low_out 和 high_out 同时为1*3向量或者gamma为1*3向量时。调整后的颜色矩阵newmap 和map有相同的大小。
RGB2 = imadjust(RGB1,...) 对RGB图像RGB1的红、绿、蓝调色板分别进行调整。随着颜色矩阵的调整,每一个调色板都有唯一的映射值。
注意:如果high_out < low_out, 输出图像是颠倒的,像摄像底片.
举例:
调整低对比度灰度图像:
I = imread('pout.tif');
J = imadjust(I);
imshow(I), figure, imshow(J)
调整灰度图像,指定范围:
K = imadjust(I,[0.3 0.7],[]);figure, imshow(K)调整RGB图像
RGB1 = imread('football.jpg');RGB2 = imadjust(RGB1,[.2 .3 0; .6 .7 1],[]);imshow(RGB1), figure, imshow(RGB2)
本文出自 “独家雨天” 博客,请务必保留此出处http://520sky.blog.51cto.com/9188727/1589496
2007-04-15 20:15
clear all
%一,图像的预处理,读入彩***像将其灰度化
PS=imread('1.jpg'); %读入JPG彩***像文件
imshow(PS) %显示出来
title('输入的彩色JPG图像')
imwrite(rgb2gray(PS),'PicSampleGray.bmp'); %将彩***片灰度化并保存
PS=rgb2gray(PS); %灰度化后的数据存入数组
%二,绘制直方图
[m,n]=size(PS); %测量图像尺寸参数
GP=zeros(1,256); %预创建存放灰度出现概率的向量
for k=0:255
GP(k+1)=length(find(PS==k))/(m*n); %计算每级灰度出现的概率,将其存入GP中相应位置
end
figure,bar(0:255,GP,'g') %绘制直方图
title('原图像直方图')
xlabel('灰度值')
ylabel('出现概率')
%三,直方图均衡化
S1=zeros(1,256);
for i=1:256
for j=1:i
S1(i)=GP(j)+S1(i); %计算Sk
end
end
S2=round((S1*256)+0.5); %将Sk归到相近级的灰度
for i=1:256
GPeq(i)=sum(GP(find(S2==i))); %计算现有每个灰度级出现的概率
end
figure,bar(0:255,GPeq,'b') %显示均衡化后的直方图
title('均衡化后的直方图')
xlabel('灰度值')
ylabel('出现概率')
%四,图像均衡化
PA=PS;
for i=0:255
PA(find(PS==i))=S2(i+1); %将各个像素归一化后的灰度值赋给这个像素
end
figure,imshow(PA) %显示均衡化后的图像
title('均衡化后图像')
imwrite(PA,'PicEqual.bmp');
用imadjust函数
imadjust:调整图像的强度值或颜色用法形式:
J = imadjust(I)
J = imadjust(I,[low_in; high_in],[low_out; high_out])
J = imadjust(I,[low_in; high_in],[low_out; high_out],gamma)
newmap = imadjust(map,[low_in; high_in],[low_out; high_out],gamma)
RGB2 = imadjust(RGB1,...)
用法说明:
J = imadjust(I)将灰度图像I中的亮度值映射到J中的新值并使1%的数据是在低高强度和饱和,这增加了输出图像J的对比度值;
此用法相当于imadjust(I,stretchlim(I)).
J = imadjust(I,[low_in; high_in],[low_out; high_out]) 将图像I中的亮度值映射到J中的新值,即将low_in至hige_in之间的值映射到low_out至high_out之间的值。low_in以下与high_in以上的值被剪切掉了,也就是说,low_in以下的值映射到low_out,high_in以上的值映射到high_out。它们都可以使用空的矩阵[],默认值是[0 1]。
J = imadjust(I,[low_in; high_in],[low_out; high_out],gamma) 将图像I中的亮度值映射到J中的新值,其中gamma指定描述值I和值J关系的曲线形状。如果gamma小于1,此映射偏重更高数值(明亮)输出,如果gamma大于1,此映射偏重更低数值(灰暗)输出,如果省略此参数,默认为1(线性映射).
newmap = imadjust(map,[low_in; high_in],[low_out; high_out],gamma)调整索引***像的调色板map。如果low_in, high_in, low_out, high_out和gamma都是标量,那么对r,g,b分量同时都做此映射。对于每个颜色分量都有唯一的映射,当low_in和high_in同时为1*3向量或者low_out 和 high_out 同时为1*3向量或者gamma为1*3向量时。调整后的颜色矩阵newmap 和map有相同的大小。
RGB2 = imadjust(RGB1,...) 对RGB图像RGB1的红、绿、蓝调色板分别进行调整。随着颜色矩阵的调整,每一个调色板都有唯一的映射值。
注意:如果high_out < low_out, 输出图像是颠倒的,像摄像底片.
举例:
调整低对比度灰度图像:
I = imread('pout.tif');
J = imadjust(I);
imshow(I), figure, imshow(J)
调整灰度图像,指定范围:
K = imadjust(I,[0.3 0.7],[]);figure, imshow(K)调整RGB图像
RGB1 = imread('football.jpg');RGB2 = imadjust(RGB1,[.2 .3 0; .6 .7 1],[]);imshow(RGB1), figure, imshow(RGB2)
本文出自 “独家雨天” 博客,请务必保留此出处http://520sky.blog.51cto.com/9188727/1589496
相关文章推荐
- 基于灰度投影的电子稳像算法研究 (matlab代码)毕业设计
- 基于PCA的人脸检测(Matlab版代码)
- 基于对比度的视觉显著性映射(visual saliency map)快速matlab代码
- 基于matlab的卷积神经网络(CNN)讲解及代码
- 基于MATLAB Coder将matlab代码转换成C代码
- 基于灰度投影的电子稳像算法研究 (matlab代码)毕业设计
- 基于单神经元的自适应PID算法实现步骤与MATLAB代码
- 输出全排列问题,基于递归思想,MATLAB代码。
- 自己写的Fibonacci 数列计算代码,基于MATLAB ,递归思想!
- Matlab图像识别/检索系列(6)-10行代码完成深度学习网络之基于CNN的图像分类
- 基于模型设计的FPGA开发与实现:滤波器设计与实现(三)Matlab中滤波器的HDL代码生成
- 基于MATLAB的直方图均衡化
- 基于直方图均衡化的水下激光图像处理(MATLAB仿真)
- 基于PCNN的图像增强matlab代码
- 基于L0边缘保持滤波的图像融合 matlab代码
- 基于树型弱分类器的adaboot演示(含Matlab代码)
- 基于MATLAB中fft2函数的二维图像数据的频谱生成代码
- 基于PCA的人脸识别的Matlab实现代码
- 基于直方图均衡化的水下激光图像处理(MATLAB仿真)
- Matlab图像识别/检索系列(6)-10行代码完成深度学习网络之基于CNN的图像分类