直方图均衡化程序 matlab
2016-10-07 17:23
197 查看
%直方图均衡化
I = imread('rice.png');
[height,width] = size(I);
figure
subplot(221)
imshow(I)%显示原始图像
subplot(222)
imhist(I)%显示原始图像直方图
%进行像素灰度统计;
NumPixel = zeros(1,256);%统计各灰度数目,共256个灰度级
for i = 1:height
for j = 1: width
NumPixel(I(i,j) + 1) = NumPixel(I(i,j) + 1) + 1;%对应灰度值像素点数量增加一
end
end
%计算灰度分布密度
ProbPixel = zeros(1,256);
for i = 1:256
ProbPixel(i) = NumPixel(i) / (height * width * 1.0);
end
%计算累计直方图分布
CumuPixel = zeros(1,256);
for i = 1:256
if i == 1
CumuPixel(i) = ProbPixel(i);
else
CumuPixel(i) = CumuPixel(i - 1) + ProbPixel(i);
end
end
%累计分布取整
CumuPixel = uint8(255 .* CumuPixel + 0.5);
%对灰度值进行映射(均衡化)
for i = 1:height
for j = 1: width
I(i,j) = CumuPixel(I(i,j));
end
end
subplot(223)
imshow(I)%显示原始图像
subplot(224)
imhist(I)%显示原始图像直方图
I = imread('rice.png');
[height,width] = size(I);
figure
subplot(221)
imshow(I)%显示原始图像
subplot(222)
imhist(I)%显示原始图像直方图
%进行像素灰度统计;
NumPixel = zeros(1,256);%统计各灰度数目,共256个灰度级
for i = 1:height
for j = 1: width
NumPixel(I(i,j) + 1) = NumPixel(I(i,j) + 1) + 1;%对应灰度值像素点数量增加一
end
end
%计算灰度分布密度
ProbPixel = zeros(1,256);
for i = 1:256
ProbPixel(i) = NumPixel(i) / (height * width * 1.0);
end
%计算累计直方图分布
CumuPixel = zeros(1,256);
for i = 1:256
if i == 1
CumuPixel(i) = ProbPixel(i);
else
CumuPixel(i) = CumuPixel(i - 1) + ProbPixel(i);
end
end
%累计分布取整
CumuPixel = uint8(255 .* CumuPixel + 0.5);
%对灰度值进行映射(均衡化)
for i = 1:height
for j = 1: width
I(i,j) = CumuPixel(I(i,j));
end
end
subplot(223)
imshow(I)%显示原始图像
subplot(224)
imhist(I)%显示原始图像直方图
相关文章推荐
- MATLAB - 练习程序,直方图均衡化
- matlab练习程序(灰度图直方图均衡化)
- 灰度图直方图均衡化(matlab练习程序)
- 自己动手编写小波信号分解与重构的Matlab程序
- 计算图片亮度的matlab小程序
- 2个简单的MATLAB程序
- 我的matlab实验程序
- 最短路算法,matlab程序
- 去掉MATLAB编译产生的可执行图形界面程序运行时的DOS黑窗口的一种方法
- matlab 计算程序运行时间 的几个函数
- 嵌入式小波零树(EZW)算法的过程详解和Matlab代码(2)编码过程(081227-补充quantifier程序)
- 一个水母BBS上的SA的MATLAB程序
- 图形学-对比度变换-直方图均衡化-程序开发-3P代码网
- matlab程序发布为独立应用程序
- MIT-BIH ECG 信号的数据读取方法和Matlab程序
- VC++中使用MATLAB的C++数学库和MCC生成的程序(转)
- VC6调用matlab7里的m程序的案例及方法
- matlab 二维小波变换程序
- 数字水印嵌入的matlab程序
- 脱离matlab运行可执行程序