一、 实验目的:
理解图像灰度直方图的概念,掌握图像直方图的计算方法;掌握直方图均衡化图像增强技术,理解均衡化的处理过程。理解和掌握均值滤波、中值滤波的原理和具体算法。能解释用大小和形状不同的滑动窗口进行均值、中值滤波后图像所呈现的一些特征。
二、 实验内容:
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('直方图均衡化');

在这里插入图片描述

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐