• 数字图像处理:图像的灰度变换(Matlab实现)


    (1)线性变换:
    通过建立灰度映射来调整源图像的灰度。

    k>1增强图像的对比度;k=1调节图像亮度,通过改变d值达到调节亮度目的;0

    i = imread('theatre.jpg');
    i = im2double(rgb2gray(i));
    [m,n]=size(i);
    %增加对比度
    Fa = 1.25; Fb = 0;
    O = Fa.*i + Fb/255;
    figure(1), subplot(221), imshow(O);
    title('Fa = 1.25, Fb = 0, contrast increasing');
    figure(2),subplot(221), [H,x]=imhist(O, 64);
    stem(x, (H/m/n), '.');
    title('Fa = 1.25, Fb = 0, contrast increasing');
    %减小对比度
    Fa =0.5; Fb = 0;
    O = Fa.*i + Fb/255;
    figure(1), subplot(222),imshow(O);
    title('Fa = 0.5, Fb = 0, contrast decreasing');
    figure(2), subplot(222), [H,x] = imhist(O, 64);
    stem(x, (H/m/n), '.');
    title('Fa = 0.5, Fb = 0, contrast decreasing');
    %线性亮度增加
    Fa = 0.5; Fb = 50;
    O = Fa.*i + Fb/255;
    figure(1), subplot(223), imshow(O);
    title('Fa = 0.5, Fb = 50, brightness control');
    figure(2), subplot(223), [H,x]=imhist(O,64);
    stem(x, (H/m/n), '.');
    title('Fa = 0.5, Fb = 50, brightness control');
    %反相显示
    Fa = -1; Fb = 255;
    O = Fa.*i + Fb/255;
    figure(1), subplot(224), imshow(O);
    title('Fa = -1, Fb = 255, reversal processing');
    figure(2), subplot(224),[H,x]=imhist(O, 64);
    stem(x, (H/m/n), '.');
    title('Fa = -1, Fb = 255, reversal processing');

    (2)对数变换:
    增强低灰度,减弱高灰度值。

    i = imread('theatre.jpg');


    i = rgb2gray(i);
    i = double(i);

    out1 = log(1+i)/0.065;
    out2 = log(1+i)/0.035;
    out1(find(out1>255)) = 255;
    out2(find(out2>255)) = 255;
    out1 = uint8(out1);
    out2 = uint8(out2);

    (3)幂次变换:
    次数小于1时,增强低灰度,减弱高灰度;次数大于1时增强高灰度,减弱低灰度。

    i = rgb2gray(imread('theatre.jpg'));
    i = double(i);
    y1 = 255*(i/255).^2.5;
    y2 = 255*(i/255).^0.4;
    y1 = uint8(y1);
    y2 = uint8(y2);

    (4) 指数变换:
    增强高灰度,减弱低灰度。

    i = imread('theatre.jpg');
    i = rgb2gray(i);
    i = double(i);

    y1 = 1.5.^(i*0.070)-1;
    y2 = 1.5.^(i*0.050)-1;
    y1(find(y1>255)) = 255;
    y2(find(y2>255)) = 255;
    y1 = uint8(y1);
    y2 = uint8(y2);

    (5)灰度拉伸:
    有时图像灰度集中在某小块区域,需要改变图像对比度。

    i = imread('theatre.jpg');
    i = rgb2gray(i);
    L = imadjust(i,[ ],[50/255;150/255]);
    J = imadjust(L,[50/255;150/255 ],[20/255;230/255]);

    (6)灰度均衡:
    i = rgb2gray(imread('theatre.jpg'));
    LC = imadjust(i,[ ],[50/255;150/255]);
    HE1 = histeq(LC);%均衡函数

    (7)直方图规定化:
    实现局部的灰度均衡。

    img = rgb2gray(imread('theatre.jpg'));
    img_ref = rgb2gray(imread('rpic.jpg'));%参考图,按照这个的的直方图进行规定化
    [hgram, x] = imhist(img_ref);
    J = histeq(img, hgram);

  • 相关阅读:
    lhgdialogv3.13 使用点滴
    CheckBoxList 取值 及选中相关用法
    repeater 及 gridview 中绑定短日期
    数据库中日期大小的判断
    父子不同窗口间刷新传值
    子级Repeater获取父级Repeater绑定项的值
    vs.net 2010 web 项目中使用 webservice
    web打印实现方案 Lodop6.034 使用方法总结
    用 showModalDialog 方法回传数据到父页中去
    vs.net2010中使用 Ajax Control Toolkit
  • 原文地址:https://www.cnblogs.com/geeksongs/p/11037415.html
Copyright © 2020-2023  润新知