一、 实验目的:
理解图像灰度直方图的概念,掌握图像直方图的计算方法;掌握直方图均衡化图像增强技术,理解均衡化的处理过程。理解和掌握均值滤波、中值滤波的原理和具体算法。能解释用大小和形状不同的滑动窗口进行均值、中值滤波后图像所呈现的一些特征。
二、 实验内容:
1、图像直方图及均衡化
1)获取实验用图像:使用imread函数将图像读入Matlab。
2)计算图像的灰度直方图,并用plot等函数生成灰度直方图。
3)设计直方图均衡化算法,并进行程序设计实现。
4)根据直方图均衡化的灰度变换函数实现图像灰度的映射变换,获得均衡化的图像结果。
5)计算均衡化图像的灰度直方图,并用plot等函数生成灰度直方图。
2、图像滤波
矩形邻域中值滤波设计程序,实现3×3、5×5、15×15邻域均值滤波、中值滤波。比较处理前后图像效果。
三、 实验报告要求:
画出直方图均衡化算法的规范化程序设计流程图。用imshow函数显示处理前后图像,用plot等函数生成原始图像和处理图像的灰度直方图,并进行实验结果分析。
代码:
1、图像直方图及均衡化
clc;
clear;
RGB = imread('D:\photo\2.jpg'); % 读取彩色图
subplot(2,3,1);imshow(RGB);title('彩色图');
fx=rgb2gray(RGB);
subplot(2,3,2);imshow(fx);title('灰度图');
subplot(2,3,3);imhist(fx);title('灰度图');
[R, C] = size(fx);
% 统计每个像素值出现次数
count = zeros(1, 256);
for i = 1 : R
for j = 1 : C
count(1, fx(i, j) + 1) = count(1, fx(i, j) + 1) + 1;
end
end
%一下编写T函数[2]
T = zeros(1, 256);
T = double(T); count = double(count);
% 统计每个像素值出现的概率, 得到概率直方图
for i = 1 : 256
T(1, i) = count(1, i) / (R * C);
end
% 求累计概率,得到累计直方图
for i = 2 : 256
T(1, i) = T(1, i - 1) + T(1, i);
end
% 完善T函数的定义
for i = 1 : 256
T(1, i) = T(1, i) * 255;
end
% 完成每个像素点的映射
fy = double(fx);
for i = 1 : R
for j = 1 : C
fy(i, j) = T(1, fy(i, j) + 1);
end
end
% 输出仍然要记得改数据类型
fy = uint8(fy);
subplot(2,3,5);imshow(fy);title('直方图均衡化');
subplot(2,3,6);imhist(fy);title('直方图均衡化');