图像处理实验
直方图均衡化
程序清单:
clc;
close all;
clear
src_img = imread('cameraman.tif');
figure (1)
%显示原始图像
subplot(321),imshow(src_img),title('原图像');
%显示原始图像直方图
subplot(322),imhist(src_img),title('原图像直方图');
%利用自己的函数做直方图均衡化
I=myHisteq(src_img);
%显示均衡化后的图像
subplot(325),imshow(I),title('均衡化');
%显示均衡化图像直方图
subplot(326),imhist(I),title('均衡化直方图');
function I=myHisteq(src_img)
% 获取图像的维数
[height,width] = size(src_img);
I=size(src_img);
% 原始图像灰度级 k=256,
% 保存图片中各个灰度级的像素的个数
pixelNum=zeros(1,256);
% 统计图片中每个灰度级像素的个数
% 妙用: 图片中每个像素点的灰度值为 (0,255)之间的整数,
% 而保存像素点个数的数组为一维数组,且为(1,256)
% 所以可以通过灰度值加一得到数组的索引号,再将对应
% 位置的计数加一,从而可以统计出每个灰度级像素的个数。
for i=1:height
for j=1:width
pixelNum(src_img(i,j)+1)=pixelNum(src_img