精华内容
下载资源
问答
  • 3.1 对数变换 3.2 伽马变换 参考资料 1 灰度变换简介 灰度变换是图像增强的一种重要手段,用于改善图像显示效果,属于空间域处理方法,它可以使图像动态范围加大,使图像对比度扩展,图像更加清晰,特征更加明显...

    目录

    1 灰度变换简介

    2 线性灰度变换­—图像反转

    3 非线性灰度变换

    3.1 对数变换

    3.2 伽马变换

    参考资料


    1 灰度变换简介

    灰度变换是图像增强的一种重要手段,用于改善图像显示效果,属于空间域处理方法,它可以使图像动态范围加大,使图像对比度扩展,图像更加清晰,特征更加明显。灰度变换其实质就是按一定的规则修改图像每一个像素的灰度,从而改变图像的灰度范围。常见的灰度变换图像反转,对数变换和伽马变换等。其具体分类如下图所示:

     


     

    2 线性灰度变换­—图像反转

    灰度线性变换最常见的就是图像反转,在灰度图像灰度级范围[0,L-1]中,其反转的公式如下所示:

                                                                                            s=L-1-r

    其中,r表示原始图像的灰度级,s表示变换后的灰度级。

     

    下图所示为图像反转的例子,原图像是数字乳房X射线照片,其中显示有一小块病变,通过图像反转就很容易看到病变区域。

     

    代码如下所示:

    # -*- coding: utf-8 -*-
    import cv2
    import numpy as np
    import matplotlib.pyplot as plt
    
    #读取原始图像
    img = cv2.imread('zxp.jpg')
    
    #图像灰度转换
    grayImage = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    
    #获取图像高度和宽度
    height = grayImage.shape[0]
    width = grayImage.shape[1]
    
    #创建一幅图像
    result = np.zeros((height, width), np.uint8)
    
    #图像灰度反色变换 s=255-r
    for i in range(height):
        for j in range(width):
            gray = 255 - grayImage[i,j]
            result[i,j] = np.uint8(gray)
    
    #显示图像
    
    cv2.imshow("Gray Image", grayImage)
    cv2.imshow("Result", result)
    
    
    #等待显示
    cv2.waitKey(0)
    cv2.destroyAllWindows()

     

    运行结果如下图所示:

     


     

    3 非线性灰度变换

    3.1 对数变换

    图像灰度对数变换一般表示如下所示:

                                                                                        s=c\log (1+r)

    其中,r表示原始图像的灰度级,s表示变换后的灰度级,c为常数。

    假设r\ge 0,下图所示的对数曲线的形状表明,改变换将输入中范围较窄的低灰度值映射为输出中较宽范围的灰度值。相反的,对高的输入灰度值也是如此。我们使用这种类型的变换来扩展图像中暗像素的值,同时压缩更高灰度级的值。反对数变换的作用与此相反。

     

    代码如下所示:

    # -*- coding: utf-8 -*-
    import numpy as np
    import matplotlib.pyplot as plt
    import cv2
    
    #绘制曲线
    def log_plot(c):
        x = np.arange(0, 256, 0.01)
        y = c * np.log(1 + x)
        plt.plot(x, y, 'r', linewidth=1)
        plt.rcParams['font.sans-serif']=['SimHei'] #正常显示中文标签
        plt.title(u'对数变换函数')
        plt.xlim(0, 255), plt.ylim(0, 255)
        plt.show()
    
    #对数变换
    def log(c, img):
        output = c * np.log(1.0 + img)
        output = np.uint8(output + 0.5)
        return output
    
    #读取原始图像
    img = cv2.imread('test8.bmp')
    
    #绘制对数变换曲线
    log_plot(42)
    
    #图像灰度对数变换
    output = log(42, img)
    
    #显示图像
    cv2.imshow('Input', img)
    cv2.imshow('Output', output)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

     

    运行结果如下图所示:

     

     


     

    3.2 伽马变换

    伽玛变换又称为 指数变换 或 幂次变换,是另一种常用的灰度非线性变换。图像灰度的伽玛变换一般表示如下所示:

                                                                                                 s=c{{r}^{\gamma }}

    其中,r表示原始图像的灰度级,s表示变换后的灰度级,c\gamma正常数

    1)当\gamma>1时,会拉伸图像中灰度级较高的区域,压缩灰度级较低的部分;

    2)当\gamma<1时,会拉伸图像中灰度级较低的区域,压缩灰度级较高的部分;

    3)当\gamma=1时,该灰度变换是线性的,此时通过线性方式改变原图像。

    如下图所示,不同\gamma值的变换曲线:

     

    下图所示为图像伽马变换的例子:

     

     

    代码如下所示:

    # -*- coding: utf-8 -*-
    import numpy as np
    import matplotlib.pyplot as plt
    import cv2
    
    #绘制曲线
    def gamma_plot(c, v):
        x = np.arange(0, 256, 0.01)
        y = c*x**v
        plt.plot(x, y, 'r', linewidth=1)
        plt.rcParams['font.sans-serif']=['SimHei'] #正常显示中文标签
        plt.title(u'伽马变换函数')
        plt.xlim([0, 255]), plt.ylim([0, 255])
        plt.show()
    
    #伽玛变换
    def gamma(img, c, v):
        lut = np.zeros(256, dtype=np.float32)
        for i in range(256):
            lut[i] = c * i ** v
        output_img = cv2.LUT(img, lut) #像素灰度值的映射
        output_img = np.uint8(output_img+0.5)
        return output_img
    
    #读取原始图像
    img = cv2.imread('test9.bmp')
    
    #绘制伽玛变换曲线
    gamma_plot(0.00000005, 4.0)
    
    #图像灰度伽玛变换
    output = gamma(img, 0.00000005, 4.0)
    
    #显示图像
    cv2.imshow('Imput', img)
    cv2.imshow('Output', output)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

     

    运行结果如下图所示:

     


     

    参考资料

    [1] https://blog.csdn.net/Eastmount/article/details/88858696

    [2] https://blog.csdn.net/Eastmount/article/details/88929290

    [3] 冈萨雷斯. 数字图像处理(第三版) 

    展开全文
  • 分线性灰度变换-对数变换
  • 灰度变换——对数变换

    千次阅读 2017-11-01 17:30:54
    分类:对数变换属于灰度变换中的非线性变换。 作用: 1.对数变换实现了图像灰度扩展和压缩的功能。可以从对数曲线看出,它扩展低灰度值而压缩高灰度值。 2.用于显示傅里叶变换的频谱图。在进行傅立叶变换时,得到...

    分类:对数变换属于灰度变换中的非线性变换。
    作用:
    1.对数变换实现了图像灰度扩展和压缩的功能。可以从对数曲线看出,它扩展低灰度值而压缩高灰度值。
    2.用于显示傅里叶变换的频谱图。在进行傅立叶变换时,得到的频谱的动态范围较大,频谱值的范围通常为[0,10^6],甚至更高。这样范围的值,显示器是无法完整的显示如此大范围的灰度值的,因而许多灰度细节会被丢失掉。而将得到的频谱值进行对数变换,可以将其动态范围变换到一个合适区间,这样就能够显示更多的细节。

    s = c log ⁡ ( 1 + r )

    matlab实现:
    可以直接通过定义图像矩阵得到,也可以逐像素点经对数函数得到新的响应。
    代码:

    clear
    %对数变换
    I=imread('1.jpg');
    I=rgb2gray(I);
    I=im2double(I);
    [m,n]=size(I);
    T=1.1*log(I+1.1);
    K=zeros(m,n);
    for i=1:m
        for j=1:n
            K(i,j)=log(I(i,j)+1);
        end
    end
    subplot(331)
    imshow(I);
    subplot(332)
    imshow(T,[]);
    subplot(333)
    imshow(K,[]);
    
    %频域
    F1=abs(fftshift(fft2(I)));
    % F2=abs(fftshift(fft2(T)));
    F2=log(F1+1);
    F3=abs(fftshift(fft2(K)));
    subplot(334)
    imshow(F1,[]);
    subplot(335)
    imshow(F2,[]);
    subplot(336)
    imshow(F3,[]);
    
    %直方图
    
    [counts,x]=imhist(I,32);
    counts=counts/m/n;
    subplot(337)
    stem(x,counts);
    [counts,x]=imhist(T,32);
    counts=counts/m/n;
    subplot(338)
    stem(x,counts);
    [counts,x]=imhist(K,32);
    counts=counts/m/n;
    subplot(339)
    stem(x,counts);

    这里写图片描述
    可以看到,
    1.经过对数变换,第二列相对第一列原图,灰度更为集中在中间灰度范围:原因是低灰度更亮,高灰度变暗。这也可以从直方图看到。
    2.第二列傅里叶变换的频谱图是对原图傅里叶频谱图的对数变换,可以看到,经过对数变换,能够显示更多的图像信息。

    展开全文
  • 常用的灰度变换 在图像处理中,灰度图像为单通道,灰度值...下面主要介绍图像反色、对数变换、伽马变换三种常用的灰度变换方法。 反色 对于灰度图像,反色处理的公式:F(i,j)=255−F(i,j)F(i,j)=255−F(i,j)F...

    常用的灰度变换

    在图像处理中,灰度图像为单通道,灰度值范围为[0, 255];彩色图像的为RGB三通道,每个通道的像素值的范围也是[0, 255]。灰度变换就是一组映射关系,通过这组映射关系的运算,实现图像效果的变化。下面主要介绍图像反色、对数变换、伽马变换三种常用的灰度变换方法。

    反色

    对于灰度图像,反色处理的公式:F(i,j)=255F(i,j),其中(i,j)为图像中任意一点的坐标
    对于彩色图像,反色处理的公式:
    FR(i,j)=255FR(i,j)
    FG(i,j)=255FG(i,j)
    FB(i,j)=255FB(i,j)
    反色适用于增强图像中暗色区域中嵌入的白色或灰色细节。

    对数变换

    对于灰度图像,对数变换的公式: F(i,j)=clog(1+F(i,j))
    其中,c为常数系数,当c=105.8865时,变换后图像的灰度范围为[0, 255]
    对于彩色图像,对数变换的公式:
    FR(i,j)=clog(1+FR(i,j))
    FG(i,j)=clog(1+FG(i,j))
    FB(i,j)=clog(1+FB(i,j))
    对数变换适用于扩展图像中的暗像素的值,同时压缩高灰度级的值。

    伽马变换

    对于灰度图像,伽马变换的公式:F(i,j)=cF(i,j)γ
    其中,c,γ为常数系数,
    当c=1, γ=1时,该公式退化为F(i,j)=F(i,j),即没有经过任何处理。
    当γ<1时,伽马曲线将较窄范围的暗色灰度值映射为较宽范围的灰度值;
    当γ>1时,伽马曲线将较宽范围的灰度值映射为较窄范围的暗色灰度值。
    为了确定伽马变换后图像灰度值的取值范围,需要根据γ值来对c值进行调整。下面举例说明:
    当γ = 0.4时,为了保证输出图片的灰度范围为[0, 255],经过计算,c=27.7923
    当γ =1.6时,为了保证输出图片的灰度范围为[0, 255],经过计算, c=0.0360

    展开全文
  • 数字图像处理-空间域处理-灰度变换-基本灰度变换函数(反转变换、对数变换、伽马变换和分段线性变换)
    展开全文
  • 学习DIP第2天  灰度变换,及按照一定规则对像素点的灰度值进行变换,变换的结果可以增强对比度,或者达到...完整内容迁移至 https://face2ai.com/DIP-1-2-灰度变换-gama变换-对数-反对数变换/  http://www.to...
  • 本文参考了 以下这篇文章[数字图像处理]灰度变换——反转,对数变换,伽马变换,灰度拉伸,灰度切割,位图切割 https://blog.csdn.net/zhoufan900428/article/details/12709361并进行了一下改进。以上为上述文章 的...
  • 对数变换的通用形式为:,其中c是一个常数, 由对数函数的性质可知,改变换将范围较窄的低灰度值映射为较宽范围的灰度值,相反地,对高输入灰度值也是如此。 我们使用这种类型的变换来扩展图像中,暗像素的值,...
  • 灰度变换,对数,伽马,反色 根据下列函数图像分析,可以得知各个变换的作用。 对数变换分析:对数变换使得输入的低级别的灰度,输出成了更高级别灰度。比如下图中的对数变换曲线,输入 L/4 时,对应输出就达到 3/4 ...
  • 灰度变换——反转,对数变换,伽马变换,灰度拉伸,灰度切割,位图切割
  • 灰度变换
  • 灰度对数变换

    千次阅读 2015-10-21 19:10:57
    理论基础:  对数变换的一般表达式为: t=c *log(1+s)  其中 c为尺度比例常数,s为原图灰度值,t 为变换后的目标灰度值。
  • 总结性的一篇博文,内容其实很简单,之所以写出来是为了对自己之前所学做一些总结。 参考自:《数字图像处理》--第...灰度变换在图像单个像素上操作,主要以对比度和阈值处理为目的。空间滤波涉及改善性能的操作,...
  • 对数变换的表达式:g = c*log(1+f),主要应用压缩动态范围 其中c是一个常数,f是浮点数, 图像类似: gamma曲线的形状可变,但是对数形状是固定的 当执行一个对数变换时,通常期望将导致的压缩值还原为显示的...
  • 线性灰度变换 read_image (Image, 'claudia') dev_close_window () get_image_size (Image, Width, Height) dev_open_window_fit_size (0, 0, Width, Width, -1, -1, WindowHandle) dev_display (Image) * 灰度处理 ...
  • 前一篇文章讲解了图像灰度化处理及线性变换知识,结合OpenCV调用cv2.cvtColor()函数实现图像灰度操作,本篇文章主要讲解非线性变换,使用自定义方法对图像进行灰度化处理,包括对数变换和伽马变换。本文主要讲解灰度...
  • 图像灰度变换

    2019-05-07 20:52:13
    由MATLAB编写的图像灰度变换,其中所包含的灰度变换由线性变换、对数变换、反转变换、指数变换4中,并由相应的实验结果图片
  • 灰度变换,属于一个非常重要的概念。这里主要参考《Digital Image Processing》 Rafael C. Gonzalez / Richard E. Woods 的第三章。书中所有的实验与数学式都采用了8-bit 图像的灰度范围,也就是0到255这样一个范围...
  • // 对比度增强.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include #include using namespace cv;...//grayscale 目标灰度级 //rows cols type 目标图像的行,列,以

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 386
精华内容 154
关键字:

灰度变换对数变换