• 大小: 3KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-04
  • 语言: Matlab
  • 标签:

资源简介

图像亮度增强,采用各种非线性函数变换,包括幂函数、指数函数、对数函数等等,以及直方图均衡化方法。

资源截图

代码片段和文件信息

%函数变换法的思想是通过拉伸暗区并压缩亮区,从而达到亮度增强的目的
%直方图均衡化的思想是通过改变灰度分布来增强对比度
I=imread(‘lena.jpg‘); %图片读入
[heightwidth] = size(I);

model=input(‘请选择变换函数:1.方根;2.对数函数;3.指数函数;4.幂函数;5.直方图均衡化:‘);
if(model==5)
    figure;%显示
    subplot(221);imshow(I);title(‘原图‘);
    subplot(223);imhist(I);title(‘原图直方图‘);%显示原始图像直方图
    NumPixel=zeros(1256);%统计各灰度数目,共256个灰度级
    for i=1:height
        for j=1: width
            NumPixel(I(ij)+1) = NumPixel(I(ij)+1)+1;%对应灰度值像素点数量增加1
        end
    end
    %计算灰度分布密度
    ProbPixel = zeros(1256);
    for i = 1:256
        ProbPixel(i) = NumPixel(i) / (height * width * 1.0);
    end
    %计算累计直方图分布
    CumuPixel = zeros(1256);
    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(ij)=CumuPixel(I(ij)+1);
        end
    end
    subplot(222);imshow(I);title(‘直方图均衡化后的图像‘);
    subplot(224);imhist(I);title(‘直方图均衡化的直方图‘);
    imwrite(I‘直方图均衡化后的图像.jpg‘);%写新图
else
    switch(model)
        case 3
            a_exponent=input(‘请输入大于1的底数(建议为1.01):‘);
        c

评论

共有 条评论

相关资源