zoukankan      html  css  js  c++  java
  • 数字图像处理之亮度变换

    数字图像处理之亮度变换

                                               by方阳

    版权声明:本文为博主原创文章,转载请指明转载地址

    http://www.cnblogs.com/fydeblog/p/6557603.html

    第二篇博客,为自己加油加油!!

    今天写一点亮度变换的东西;亮度变换主要有线性与非线性变化和直方图处理,线性变化有分段线性和直接线性之分,非线性有对数变换,幂律变换等等,直方图处理有直方图均衡和直方图归一化,今天只讲直方图均衡。

    今天选的是被广泛使用的lena图片,大家有眼福了!直方图用的是细胞图,比较明显!

    参考书籍:数字图像处理(matlab版)——冈萨雷斯

    直接线性变换:直接乘以倍数

    参考代码:

    I=imread('lena.bmp');
    I1=I*2;
    I2=I/2;
    figure;
    subplot(1,3,1);
    imshow(I);
    title('原图');
    subplot(1,3,2);
    imshow(I1);
    title('线性2倍');
    subplot(1,3,3);
    imshow(I2);
    title('线性1/2倍');
    

     运行结果;

    非线性变换:对数和幂律变换

    参考代码:

    figure;
    A=double(I);
    B=40*(log(A+1));
    I3=uint8(B);
    subplot(1,3,1);
    imshow(I3);
    title('对数');
    I_D=double(I);
    C=I_D/255;
    I4=uint8(255*(C.^0.7));
    subplot(1,3,2);
    imshow(I4);
    title('幂律变换—γ=0.5');
    I5=uint8(255*(C.^1.3));
    subplot(1,3,3);
    imshow(I5);
    title('幂律变换—γ=1.5');
    

     运行结果:

    分段线性变换:这里只介绍灰度层分级,其他的类似

    参考代码:

    figure;
    subplot(1,3,1);
    imshow(I);
    title('原图');
    I6=fy_PiecewiseLinear(I,100,170,1.5);
    subplot(1,3,2);
    imshow(I6);
    title('100到170乘以1.5');
    I7=fy_PiecewiseLinear(I,170,220,1/2);
    subplot(1,3,3);
    imshow(I7);
    title('170到220除以1/2');
    

     灰度级分层函数的实现代码:

    %该函数实现分段线性
    %by方阳
    function image_out=fy_PiecewiseLinear(image_in ,low_in,high_in,linear_number)
    [m,n]=size(image_in);
    for i=1:m
        for j=1:n
            if image_in(i,j)>low_in
               if image_in(i,j)<high_in
                   image_in(i,j)=image_in(i,j)*linear_number;
               end
            end
        end
    end
    image_out=image_in;
    

     运行结果:

    最后介绍直方图均衡

    参考代码:

    figure;
    I8=imread('fig819.bmp');
    h=imhist(I8);
    subplot(2,2,1);
    imshow(I8);
    title('原始图像');
    subplot(2,2,2);
    imhist(I8);%imhist是实现显示当前图像的直方图分布
    ylim('auto');
    title('原始图像的直方图');
    I9=histeq(I8,256);%histeq是实现直方图均衡
    subplot(2,2,3);
    imshow(I9);
    title('变换后的图像');
    subplot(2,2,4);
    imhist(I9);
    title('变换后的直方图');
    ylim('auto');
    

     运行结果:

    就写到这吧,SEE YOU!!!

  • 相关阅读:
    Centos7安装nvidia显卡驱动
    Linux,Windows,Mac OS下换行的不同表示
    Linux权限管理问题
    Centos6.5final安装后若干问题与解决方法
    100天计划 绪
    python 变量,if,while,运算符
    python 初级重点
    py第四天
    搭建个人博客之路-01
    利用gulp+babel转es6
  • 原文地址:https://www.cnblogs.com/fydeblog/p/6557603.html
Copyright © 2011-2022 走看看