精华内容
下载资源
问答
  • 灰度变换增强

    2019-12-28 17:55:12
    灰度变换增强是将图像的对比度从弱变强的过程,所以也通常称为对比度增强。各种因素的限制,导致图像的对比度比较差,图像的直方图分布不够均衡,主要的元素集中在几个像素值附近。通过对比度增强,使得图像中各个...


    灰度变换增强是将图像的对比度从弱变强的过程,所以也通常称为对比度增强。各种因素的限制,导致图像的对比度比较差,图像的直方图分布不够均衡,主要的元素集中在几个像素值附近。通过对比度增强,使得图像中各个像素值尽可能均匀分布或者服从一定形式的分布,从而提高图像的质量。
    灰度变换可使图像动态范围增大,对比度得到拓展,使图像清晰、特征明显,是图像增强的重要手段之一。它主要利用点运算来修正像素灰度,由输入像素点的灰度值确定相应输出点的灰度值,是一种基于图像变换的操作。
    灰度变换不改变图像内的空间关系,除了灰度级的改变是根据某种特定的灰度函数进行之外,可以看做是‘从像素到像素’的复制操作。

    1.线性变换与非线性变换

    设原图像为f(x,y),其灰度范围为[a,b],变换后的图像为g(x,y),其灰度范围线性扩展至[c,d],则对于图像中的任一点的灰度值f(x,y),灰度变换后为g(x,y),其数学表达式为
    在这里插入图片描述
    若图像中大部分像素的灰度级分布在区间[a,b]内,maxf为原图的最大灰度级,只有很小一部分的灰度级超过了此区间,则为了改善增强效果,可以令
    在这里插入图片描述
    采用线性变换对图像中每一个像素灰度作线性拉伸,将有效改善图像视觉效果。在曝光不足或曝光过度情况下,图像的灰度可能会局限在一个很小的范围内,这时得到的图像可能是一个模糊不清、似乎没有灰度层次的图像。
    非线性变换就是利用非线性变换函数对图像进行灰度变换,主要有指数变换、对数变换等。指数变换是指输出图像的像素点灰度值与对应的输入图像的像素灰度值之间为指数关系,其一般公式为
    在这里插入图片描述
    其中,b为底数。为了增加变换的动态范围,在上述一般公式中可以加入一些调制参数,以改变变换曲线的初始位置和变化速率。这时的变换公式为
    在这里插入图片描述
    式中,a,b,c都是可以选择的参数,当f(x,y)=a时,g(x,y)=0,此时指数曲线教育X轴,由此可见参数a决定指数变换曲线的初始位置,参数c决定变换曲线的陡度,即决定曲线的变化速率。指数变换用于扩展高灰度区,一般适于过亮的图像。
    对数变换是指输出图像的像素点灰度值与对应的输入图像的像素灰度值之间为对数关系,其一般公式为
    在这里插入图片描述
    其中,lg表示以10为底。也可以选用自然对数ln。为了增加变换的动态范围,在上述一般公式中可以加入一些调制参数,这时的变换公式为
    在这里插入图片描述
    式中a,b,c都是可以选择的参数,式中f(x,y)+1是为了避免对0求对数,确保ln[f(x,y)+1]≥0。当f(x,y)=0时,ln[f(x,y)+1]=0,则y=a,a为Y轴上的截距,确定变换曲线的初始位置,b、c两个参数确定变换曲线的变换率。对数变换用于拓展低灰度区,一般适用于过暗的图像。
    对图像进行非线性灰度变换,并显示函数的曲线图。

    clear all
    clf
    a=imread('tire.tif');
    subplot(131)
    imshow(a)
    title('原始图像')
    % 显示函数的曲线图
    x=1:255;
    y=x+x.*(255-x)/255;
    subplot(132)
    plot(x,y)
    title('函数的曲线图')
    b1=double(a)+0.006*double(a).*(255-double(a));
    subplot(133)
    imshow(uint8(b1))
    title('非线性处理效果')
    

    在这里插入图片描述
    对图像进行对数非线性灰度变换

    clear all
    clf
    I=imread('office_4.jpg');
    I1=rgb2gray(I);
    subplot(121)
    imshow(I1)
    title('灰度图像')
    axis([50,250,50,200]);
    grid on;
    axis on;
    J=double(I1);
    J=40*(log(J+1));
    H=uint8(J);
    subplot(122)
    imshow(H)
    title('对数变换图像')
    axis([50,250,50,200])
    grid on
    axis on
    

    在这里插入图片描述

    2.MATLAB的灰度变换函数

    在MATLAB中,imadjust函数用于规定输出图像的像素范围,常用的调用方法如下

    J=imadjust(I)
    J=imadjust(I,[low_in;high_in],[low_out;high_out])
    J=imadjust(I,[low_in;high_in],[low_out;high_out],gamma)
    
    

    其中,I是输入的图像,J是返回的调整后的图像,该函数把在[low_in;high_in]的像素值调整到[low_out,high_out],而低于low_in的像素值映射为low_out,高于low_in的像素值映射为high_out,gamma描述了输入图像和输出图像之间映射曲线的形状。
    gamma校正也是数字图像处理中常用的图像增强技术。imadjust函数中的gamma因子既是这里所说的gamma校正的参数。gamma因子的取值决定了输入图像到输出图像的灰度映射方式,即决定了增强低灰度还是增强高灰度。当gamma等于1时,为线性变换。
    调整灰度来增加图像的对比度

    clear all
    clf
    I=imread('glass.png');
    subplot(221)
    imshow(I)
    title('原图像')
    subplot(222)
    imhist(I)
    title('原图像直方图')
    subplot(223)
    J=imadjust(I,[],[0.4,0.6]);%调整图像的灰度到指定的范围
    imshow(J)
    title('调整后的灰度图像')
    subplot(224)
    imhist(J)
    title('调整后的灰度直方图')
    

    在这里插入图片描述
    利用gamma校正处理图像

    clear all
    clf
    for i=0:255
        f=power((i+0.5)/256,1/2.2);
        LUT(i+1)=uint8(f*256-0.5);
    end
    img=imread('onion.png');
    img0=rgb2ycbcr(img);
    R=img(:,:,1);
    G=img(:,:,2);
    B=img(:,:,3);
    Y=img0(:,:,1);
    Yu=img0(:,:,1);
    [x y]=size(Y);
    for row=1:x
        for width=1:y
            for i =0:255
                if(Y(row,width)==i)
                    Y(row,width)=LUT(i+1);
                    break
                end
            end
        end
    end
    img0(:,:,1)=Y;
    img1=ycbcr2rgb(img0);
    R1=img1(:,:,1);
    G1=img1(:,:,2);
    B1=img1(:,:,3);
    subplot(121)
    imshow(img)
    title('原图')
    subplot(122)
    imshow(img1)
    title('gamma校正后的图像')
    
    

    在这里插入图片描述

    3.最大熵法增强对比度

    直方图的拉伸和均衡化都能突出图像中所隐藏的信息。为了使图像的对比度得到增强,用最大熵法对图像进行处理,突出图像的特征。最大熵法基本思想是:
    (1)求满足某些约束的信源事件概率分布时,应使得信源的熵最大;
    (2)可以依据有限的数据达到尽可能客观的效果;
    (3)克服可能引入的偏差。
    利用最大熵原理主要有以下两个依据:主观依据和客观依据。
    主观依据:又叫“不充分理由原理”,也叫“中性原理”。如果对所求的概率分布无任何先验信息,没有任何依据证明某种事件可能比任何其它事件优先,只能假定所有可能是等概率的。
    客观依据:Jaynes提出熵集中定理,满足给定约束的概率分布绝大多数集中在使熵最大的区域。较大熵的分布具有较高的多样性,所以实现的方法也更多,这样越有可能观察到。MaxPlank指出大自然好像对较大熵的情况更偏爱,即在满足给定约束条件下,事物总是力图达到最大熵。
    在信息科学中,熵表示的是信息的不确定性的量度,其数学表达式为
    在这里插入图片描述
    式中,X的具体内容跟信息量无关,于是H(x)可以写成
    在这里插入图片描述
    熵满足
    在这里插入图片描述
    第一个等号在X为确定值的时候成立(没有变化的可能);第二个等号在X均匀分布的时候成立。
    当每一事件发生的概率相等时,熵取最大值,即不确定性最大,随机程度越大,其熵越大。最大信息熵原理就是在一定约束条件下,求得一概率分布,使其信息熵取得最大值。
    下面举例说明利用最大信息熵原理使图像对比度增强。在本例中,myhisteq函数的作用是利用最大熵原理对图像进行增强,其调用格式如下:

    [wnew1,h1]=myhisteq(w)
    

    其中,w为输入的灰度图像,wnew1为输出后增强的图像,h1为变换后的直方图。增强对比度的步骤如下:
    (1)读取图像
    (2)对灰度图像进行增强
    (3)对彩色图像进行增强
    (4)利用myhisteq函数对灰度图像和彩色图像进行增强
    最大熵原理使图像的对比度增强的程序如下。

    function [wnew1,h1]=myhisteq(w)
    [m,n]=size(w) %图像的大小
    s=m*n;
    a=zeros(1,256);
    for j=1:m  %计算像素值为012...255的个数
        for k=1:n
            l=w(j,k)+1;
            a(l)=a(l)+1;
        end
    end
    h=zeros(1,256);
    h=a/s;   %计算像素值为012...255的比例
    hcum=zeros(1,256);
    for i=1:m
        for j=1:n
            hc=0;
            for k=0:w(i,j)
                hc=hc+h(k+1);
            end
            hcum(w(i,j)+1)=hc;
            wnew(i,j)=255*hc;
        end
    end
    wnew1=uint8(wnew);
    count1=zeros(1,256);
    for j=1:m
        for k=1:n
            l=wnew1(j,k)+1;
        end
    end
    h1=zeros(1,256);
    h1=count1/s;%计算变换后图像的直方图
    

    对比度增强主程序

    clear all
    clf
    %% 读取图像并对其调整大小
    cell=imread('cell.tif');
    pout=imread('pout.tif');
    [X map]=imread('trees.tif');%读取索引图像
    trees=ind2rgb(X,map);% 转化为真彩色图像
    width=210;%转化为统一宽度,以便进行对比
    images={cell,pout,trees};
    for K=1:3
        dim=size(images{K});
        images{K}=imresize(images{K},...
            [width*dim(1)/dim(2) width],'bicubic');
    end
    cell=images{1};
    pout=images{2};
    trees=images{3};
    %% 使用不同方法对图像进行增强
    cell_imadjust=imadjust(cell);%使用imadjust函数对图像进行增强
    cell_histeq=histeq(cell);%使用histeq函数对图像进行增强
    cell_adapthisteq=adapthisteq(cell);%使用adapthisteq函数进行增强
    figure
    subplot(221)
    imshow(cell)
    title('Original')
    subplot(222)
    imshow(cell_imadjust);
    title('Imadjust')
    subplot(223)
    imshow(cell_histeq)
    title('Histeq')
    subplot(224)
    imshow(cell_adapthisteq)
    title('Adapthisteq');
    %%
    pout_imadjust=imadjust(pout);%使用imadjust函数对图像进行增强
    pout_histeq=histeq(pout);%使用histeq函数对图像进行增强
    pout_adapthisteq=adapthisteq(pout);%使用adapthisteq函数进行增强
    figure;
    subplot(221)
    imshow(pout)
    title('Original')
    subplot(222)
    imshow(pout_imadjust);
    title('Imadjust')
    subplot(223)
    imshow(pout_histeq)
    title('Histeq')
    subplot(224)
    imshow(pout_adapthisteq)
    title('Adapthisteq');
    %% 显示图像的直方图
    figure
    subplot(121)
    imhist(cell)  %显示cell图像的直方图
    title('cell.tif')
    subplot(122)
    imhist(pout)
    title('pout.tif')
    %% 对彩色图像进行增强
    srgb2lab=makecform('srgb2lab');%rgb彩色空间变为L*a*b*空间结构
    lab2srgb=makecform('lab2srgb')%L*a*b*变为rgb空间结构
    trees_lab=applycform(trees,srgb2lab);%图像变换到L*a*b*空间
    max_luminosity=100;%规定最大的光照值
    L=trees_lab(:,:,1)/max_luminosity;%归一化
    trees_imadjust=trees_lab;
    trees_imadjust(:,:,1)=imadjust(L)*...
        max_luminosity;%使用imadjust函数进行增强
    trees_imadjust=applycform(trees_imadjust,...
        lab2srgb);%变换到rgb彩色空间
    trees_histeq=trees_lab;
    trees_histeq(:,:,1)=histeq(L)*...
        max_luminosity;%使用histeq函数进行增强
    trees_histeq=applycform(trees_histeq,...
        lab2srgb);%变换到rgb彩色空间
    trees_adapthisteq=trees_lab;
    trees_adapthisteq=applycform(trees_adapthisteq,...
        lab2srgb);
    figure
    subplot(221)
    imshow(trees)
    title('Original')
    subplot(222)
    imshow(trees_imadjust)
    title('Imadjust')
    subplot(223)
    imshow(trees_histeq)
    title('Histeq')
    subplot(224)
    imshow(trees_adapthisteq)
    title('Adapthisteq')
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 机器视觉,计算机视觉中灰度变换增强和图像去噪方法。
  • 灰度变换增强是空域内对图像进行增强的一种简单而有效的方法。灰度变换增强不改变原图像中像素的位置,只改变像素点的灰度值,并逐点进行。为了进行灰度变换,首先要获取灰度图像的直方图。具体实现的代码如下:...

    空域内的图像增强就是调整灰度图像的明暗对比度,是对图像中各个像素的灰度值直接进行处理。

    灰度变换增强是空域内对图像进行增强的一种简单而有效的方法。灰度变换增强不改变原图像中像素的位置,只改变像素点的灰度值,并逐点进行。为了进行灰度变换,首先要获取灰度图像的直方图。具体实现的代码如下:

    close all;clear all;clc;
    %获取灰度图像的直方图
    I=imread('pout.tif');
    row=size(I,1);  %图像的行
    col=size(I,2);  %图像的列
    N=zeros(1,256);  %创建1行256列的零矩阵
    for i=1:row
        for j=1:col
            k=I(i,j);
            N(k+1)=N(k+1)+1;  %统计各个灰度值的像素数 灰度值范围0-255
        end
    end
    figure,
    subplot(121),imshow(I);
    subplot(122),bar(N);  %绘制直方图
    axis tight;  %设置坐标轴

    运行结果如下:

    从图中可以看到,图像的灰度值主要集中在80-150之间,因此该图像比较模糊。我们可以通过将图像的灰度值均匀地分布在0-255之间,来将图像变得更加清晰。同时,需要将小于80的灰度值设置为0,大于150的灰度值设置为255。将原图像的灰度值设为x,增强图像的灰度值设为y,则得到以下关系:

    化简后得:

    接下来我们具体实现调整灰度图像的灰度范围,增强图像

    close all;clear all;clc;
    %调整灰度图像的灰度范围去增强图像
    I=imread('pout.tif');
    I=double(I);
    J=(I-80)*255/70;  %具体调整方案
    row=size(I,1);  %图像的行
    col=size(I,2);  %图像的列
    for i=1:row
        for j=1:col
            if(J(i,j)<0)  %灰度小于0像素的直接赋值为0
                J(i,j)=0;
            end
            if J(i,j)>255;  %灰度大于255的像素直接赋值为最大的255
                J(i,j)=255;
            end
        end
    end
    figure;
    subplot(121),imshow(uint8(I));  %显示原始图像 显示时,修改图像的数据格式为uint8类型
    subplot(122),imshow(uint8(J));  %显示增强结果

    可以看到图片给人的感觉是清晰度显著增强。


    ------坚持下去,少年!------

    展开全文
  • 灰度变换增强技术

    千次阅读 2016-05-10 20:06:23
    该部分由于比较简单,主要使用公式和文字进行说明,该部分主要参考图像处理大作,《数字图像处理》 ...对灰度级范围为[0,L-1]的图像,反转后的图像为灰度级为:  S=L-1-r 2、对数变换 对数变换通用形式为:  

    该部分由于比较简单,主要使用公式和文字进行说明,该部分主要参考图像处理大作,《数字图像处理》 RafaelC.Gonzalez中文版第三板,学习此部分内容尽量看书本内容,讲解比较清楚,举例也比较适当。

    1、图像反转

    对灰度级范围为[0,L-1]的图像,反转后的图像为灰度级为:

                   S=L-1-r

    2、对数变换

    对数变换通用形式为:

                   S=clog(1+r)

    其中c是一个常熟,并且r假设大于等于0.

    该变换的特点主要是从对数特性来的。可以将输入中范围较窄的低灰度值映射为输出中较宽范围的灰度值,将高的输入灰度值应该是映射为较窄的灰度值,即这种类型的变换来扩展图像中的暗像素的值,同时压缩更高级的灰度值。另外根据还有一句对对数变换比较经典的描述:

    它压缩像素值变化比较打的图像动态范围。

    3、幂律变换

    基本形式为

    S=cRr

    这种变换可以根据指数r取值的不同(大于1等于1和小于1)呈现不同的效果,关于如何判断最终变换效果可以参考链接1中一句句比较恰当的描述:

    哪部分的斜率越大,哪部分的拉伸比例就越大。

    4、分段线性变换函数

    (1)进行对比度拉伸

    (2)灰度级分层,可以将感兴趣的灰度值范围显示为一个值。

    (3)比特平面分层,将不同像素范围的图片进行分层

     

     

     

    参考链接1:http://blog.csdn.net/mghhz816210/article/details/37690077

    展开全文
  • 【数字图像处理】[1]--灰度变换增强

    千次阅读 2016-10-10 11:39:06
    【数字图像处理】[1]--灰度变换增强 这个系列会讲一下关于数字图像处理的内容。 我使用的书是清华大学出版的,下面这本 这次讲关于灰度增强变换 我大概讲一下理论,详细的可以看书,我讲一下我...
    【数字图像处理】[1]--灰度变换增强

    这个系列会讲一下关于数字图像处理的内容。
    我使用的书是清华大学出版的,下面这本

    这次讲关于灰度增强变换

    我大概讲一下理论,详细的可以看书,我讲一下我理解的重要的。

    这一节其实就一个重点,构造的一映射

    f(x,y)-->g(f(x,y))

    然后根据g这个函数类型不同,在分为几类

    其目的就是使原图像的灰度值或拉伸或压缩或反转

    1.线性灰度变换-- 负片变换
                                             这里我用负片变换举一个例子
    ImageApply[-# + 1 &, imgh]
    其实就是一个[0,1]-->[1,0]的映射
    看一下效果
    这个是原图
    变换后的效果,当然我们可以直接有mma里面自带的函数
    效果是一样的

    2.分段函数变换--根据需要,拉伸灰度细节,对不感兴趣的抑制
    f[x_, k1_, k2_, k3_, b1_, b2_, b3_, a_, b_] := 
     Piecewise[{{k1*x + b1, 0 <= x <= a}, {k2*x + b2,a < x <= b}, {k3*x + b3, b < x <= 1}}]
    Plot[f[x, 2, 0.5, 1.5, 0, 0.375, -0.375, 0.25, 0.75], {x, 0, 1}]
    定义如上的分段函数,根据下面的图可以看出,该函数拉伸了中间的灰度值


    在对图像上的灰度值做相应的映射
    data = ImageData[imgh];
    Image@Map[f[#, 2, 0.5, 1.5, 0, 0.375, -0.375, 0.25, 0.75] &,data, {3}]

    中间的细节看的更加清楚了

    3.非线性灰度变换

    先看一下我自己的解释
     
    (*对数扩展--对低亮度进行大幅拉伸,高亮度被压缩*)
    F[x_, c_] := c*Log[x + 1];
    GraphicsRow[Plot[F[x, #], {x, 0, 1}, PlotRange -> {0, 1}, Ticks -> False,ImageSize -> Tiny] & /@ {0.7, 1, 1.3}]
    可以从图上看出来高亮部分被压缩了,暗部被拉伸了,看一下效果图
    同理看一下拉伸亮部
    (*指数扩展--对高亮度区域大幅扩展*)
    F[x_, a_, b_, c_] := Power[b, c*(x - a) - 1];
    GraphicsRow[Plot[F[x, 0, E, #], {x, 0, 1}, PlotRange -> {0, 1}, Ticks -> False,ImageSize -> Tiny] & /@ {0.7, 1, 1.3}]

    看一下效果
    和上面的对比看,可以明显看到变亮了

    其实上面两种函数也是可以的,大家可以试一下

    最后还有一种函数的映射
    看一下函数图像
    看到最后一幅图像,大概可以猜到可以把原图的颜色转换为两种色彩(二值化)
    看一下效果图
    下一章会讲关于直方图变换增强的内容。

    以上,所有
    2016/10/10

    展开全文
  • 题目:选择合适的基本灰度变换模型及其参数,通过该变换增强测试图像EXP2C.tif的全局对比度。 说明:要求设置合适的模型参数,以保证对比度增强后的图像不会丢失过多的图像细节信息。   实现思路: 选择幂律...
  • 灰度变换是图像增强的一种重要手段,用于改善图像显示效果,属于空间域处理方法,它可以使图像动态范围加大,使图像对比度扩展,图像更加清晰,特征更加明显。灰度变换其实质就是按一定的规则修改图像每一个像素的...
  • 点操作的增强方法也叫灰度变换。 方法一、直接灰度变换 1、灰度求反:对图像求反是将原图灰度值翻转(黑变白,白变黑,普通黑白底片和照片的关系)。 2、增强对比度:增强图像对比度实际是增强原图的各部分的反差...
  • 图像增强灰度变换

    2020-12-11 20:47:59
    3、掌握直接灰度变换的图像增强方法。 4.熟练掌握直力图均衡化和直方图规定化的计算过程; 二、 实验内容及步骤 1、灰度变换 (1) 图像数据读出: uiopen(‘C:\Users\Administrator\Desktop\Fig.1 medicine_pic....
  • MATLAB教学视频图像增强灰度变换和直方图均衡匹配-MATLAB教学视频:空间域图像增强灰度变换和直方图均衡匹配.zip MATLAB教学视频,数字图像处理类:本期视频时长约105分钟,通过大量的图片增强案例,从图像的...
  • 图像基础13 灰度变换与图像增强

    千次阅读 2017-10-18 08:27:27
    图像的灰度变换处理是图像增强处理技术中的一种非常基础、直接的空间域图像处理方法,也是图像数字化软件和图像显示软件的一个重要组成部分。 采用灰度变换法对图像进行处理可以大大改善图像的视觉效果。灰度变换...
  • PAGE PAGE 0 宜宾学院 物理与电子信息工程学院 学科数字信号处理原理及实现 题目:MATLAB实现基于灰度变换的图像增强 姓名孙明朗 班级14级励志班 学号140303006 图像增强技术是不考虑图像降质的原因 只将图像中感兴趣...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,380
精华内容 552
关键字:

灰度变换增强