matlab实现 图像的直方图均衡化处理 直方图均衡化 代码

题目:自定义一个函数,将输入图像(EXP3A.tif)进行直方图均衡化处理,该函数输入参数为处理前的图像,输出参数为处理后的图像和直方图均衡化过程的变换函数,并画出直方图均衡化处理过程中的变换函数。

提示:直方图均衡化是一种无参的图像灰度变换方法,所以可将函数模板设计为[img2, func_T] = myHistogramEqualization(img);其中,img为唯一的输入参数输入图像;img2为输出图像,func_T为将img处理成img2所用的变换函数,变换函数可利用灰度变换模型计算累计概率密度(CDF)获得。

 

流程:

1. 统计图像中每个灰度级出现的次数,再统计图像中每个灰度级出现的概率

2. 根据变换公式得到直方图均衡化的变换函数

3. 根据变换函数映射到每个像素点

4. 输出映射后的图像

实现效果演示:

                                      图1 直方图均衡化处理前后的图像及其对应的变换函数

实现源代码:

function [img2, func_T] = myHistogramEqualization(img)
    img1 = double(img);
    [r,c,l] = size(img1)%获取图像的高r和宽c
    %统计图像中每个灰度级出现的次数
    count = zeros(1,256);
    for i=1:r
        for j=1:c
            count(1,img(i,j)+1) = count(1,img(i,j)+1)+1;
        end
    end
    %统计图像中每个灰度级出现的概率
    p = zeros(1,256);
    for i=1:256
        p(1,i) = count(1,i)/(r*c);
    end
    img2 = im2uint8(ones(r,c));%创建一个r X c大小的1矩阵
    
    func_T = zeros(1,256);%变换函数
    p_sum = 0;
    %求直方图均衡化的变换函数
    for k = 1:256
        p_sum = p_sum + p(k);%求每个灰度级的概率之和
        func_T(k) = (256-1)*p_sum;%根据变换函数的公式求和
    end
    
    func_T_z =  round(func_T);%对变换函数进行取整
    %完成每个像素点的映射
    for i = 1:256
        findi = find(func_T_z==i);%找到灰度级为i的概率和
        len = length(findi);
        for j=1:len
            findj = find(img==(findi(j)-1));%进行对应每个像素点的映射
            img2(findj) = i;
        end
    end
end
clc;
clear;
close all;

img1 = imread('EXP3A.tif');

[img2, func_T] = myHistogramEqualization(img1);


%显示图像
figure('NumberTitle', 'off', 'Name', '实验一第一题'); 

subplot(2,3,1);
imshow(img1);
title('原始图像');

subplot(2,3,3);
imshow(img2);
title('均衡化后图像');

subplot(2,3,4);
imhist(img1);
xlim([0 255]);
title('原始图像的直方图');

subplot(2,3,5);
plot(1:256,func_T);
xlim([0 255]);
ylim([0, 255]);
title('变换函数');

subplot(2,3,6);
imhist(img2);
xlim([0 255]);
title('均衡化后图像的直方图');

 

  • 22
    点赞
  • 221
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值