精华内容
下载资源
问答
  • 这段程序是对灰度图像进行非线性拉伸,即讲灰度图像的灰度分段,分为三段,低灰度级,中灰度级,高灰度级,把三段灰度级进行灰度压缩,使得亮的地方更亮,暗的地方更暗,这样可以增加灰度的对比度,便于目标跟踪。
  • 基于直方图非线性拉伸的红外图像增强新算法
  • 图像处理-线性拉伸

    万次阅读 2018-05-03 16:14:13
    线性拉伸:1)直接线性拉伸;2)裁剪线性拉伸;3)分段式拉伸。1)直接线性拉伸:(直接归一化,然后放缩到指定大小范围)代码:import cv2import numpy as npgray=np.float( cv2.imread(**) )gray_new=( gray-gray....

    图像领域:拉伸即:灰度图拉伸,与直方图均衡化类似,但是也不同!!!

    线性拉伸:1)直接线性拉伸;2)裁剪线性拉伸;3)分段式拉伸。

    1)直接线性拉伸:(直接归一化,然后放缩到指定大小范围)

    代码:

    import cv2

    import numpy as np

    gray=np.float( cv2.imread(**) )

    gray_new=( gray-gray.min() ) / ( gray.max()-gray.min() ) # 归一化到0-1

    maxout=255

    minout=0

    gray_out=gray_new * (maxout -minout) # maxout=255   minout=0

    gray_out=np.uint8( gray_out )


    2)裁剪线性拉伸:(去掉2%百分位以下的数,去掉98%百分位以上的数,上下百分位数一般相同,并设置输出上下限)

    import cv2
    import numpy as np

    gray=np.float( cv2.imread(**) )

    d2=np.percentile( gray,2 )
    u98=np.percentile( gray,98 )

    maxout=255
    minout=0

    gray_new=minout + ( (gray-d2) / (u98-d2) ) * (maxout - minout)
    gray_new[gray_new < minout]=minout
    gray_new[gray_new > maxout]=maxout

    gray_out=np.uint8(gray_new)

    3)分段式 线性拉伸(百度图片)



    分段数学公式,按照公式求出前后灰度

    即: (横轴:拉伸前灰度,纵轴:拉伸后灰度,一一对应)。

    ####################################################

    envi 中对应的线性拉伸实现:

    线性拉伸 2%: 即: 2)裁剪线性拉伸

    ENVI对打开的一幅遥感影像默认是2%的线性拉伸,当然只是显示效果发生变化,亮度得到提升,但是像元值并没有发生改变;这里的Linear2%是指将直方图累积在2%至98%之间的像元值拉伸,取直方图累积在2%处对应的光谱值为MinValue,98%处对应的光谱值为MaxValue,那么可解释为如果像元值大于MinValue且小于MaxValue,则将其拉伸至0-255;如果像元值小于MinValue,那么将其改为MinValue;如果像元值大于MaxValue,那么将其改为255。


    线性拉伸 0-255:即:1)直接线性拉伸


    ####################################################


    展开全文
  • 一、图像灰度化处理1、最大值灰度处理方法2、平均灰度处理方法3、加权平均灰度处理方法二、图像灰度线性变换1、图像灰度上移变换2、图像对比度增强变换3、图像对比度减弱变换4、图像灰度反色变换三、图像灰度非线性...

    一、图像灰度化处理

    1、最大值灰度处理方法

    该方法的灰度值等于彩色图像R、G、B三个分量中的最大值
    在这里插入图片描述

    for i in range(height):
        for j in range(width):
            #获取图像R G B最大值
            gray = max(img[i,j][0], img[i,j][1], img[i,j][2])
            #灰度图像素赋值 gray=max(R,G,B)
            grayimg[i,j] = np.uint8(gray)
    

    2、平均灰度处理方法

    在这里插入图片描述

    for i in range(height):
        for j in range(width):
            #灰度值为RGB三个分量的平均值
            gray = (int(img[i,j][0]) + int(img[i,j][1]) + int(img[i,j][2]))  /  3
            grayimg[i,j] = np.uint8(gray)
    

    3、加权平均灰度处理方法

    在这里插入图片描述

    for i in range(height):
        for j in range(width):
            #灰度加权平均法
            gray = 0.30 * img[i,j][0] + 0.59 * img[i,j][1] + 0.11 * img[i,j][2]
            grayimg[i,j] = np.uint8(gray)
    

    二、图像灰度线性变换

    图像的灰度线性变换是通过建立灰度映射来调整原始图像的灰度,从而改善图像的质量,凸显图像的细节,提高图像的对比度。
    在这里插入图片描述
    该公式中DB表示灰度线性变换后的灰度值,DA表示变换前输入图像的灰度值,α和b为线性变换方程f(D)的参数,分别表示斜率和截距。

    当α=1,b=0时,保持原始图像
    当α=1,b!=0时,图像所有的灰度值上移或下移
    当α=-1,b=255时,原始图像的灰度值反转
    当α>1时,输出图像的对比度增强
    当0<α<1时,输出图像的对比度减小
    当α<0时,原始图像暗区域变亮,亮区域变暗,图像求补

    1、图像灰度上移变换

    for i in range(height):
        for j in range(width):
            
            if (int(grayImage[i,j]+50) > 255):
                gray = 255
            else:
                gray = int(grayImage[i,j]+50)
                
            result[i,j] = np.uint8(gray)
    

    图像的所有灰度值上移50,图像变得更白了。注意,纯黑色对应的灰度值为0,纯白色对应的灰度值为255。

    2、图像对比度增强变换

    for i in range(height):
        for j in range(width):
            
            if (int(grayImage[i,j]*1.5) > 255):
                gray = 255
            else:
                gray = int(grayImage[i,j]*1.5)
                
            result[i,j] = np.uint8(gray)
    

    图像的所有灰度值增强1.5倍。

    3、图像对比度减弱变换

    for i in range(height):
        for j in range(width):
            gray = int(grayImage[i,j]*0.8)
            result[i,j] = np.uint8(gray)
    

    图像的所有灰度值减弱,图像变得更暗。

    4、图像灰度反色变换

    for i in range(height):
        for j in range(width):
            gray = 255 - grayImage[i,j]
            result[i,j] = np.uint8(gray)
    

    图像处理前后的灰度值是互补的。

    三、图像灰度非线性变换

    1、图像灰度非线性变换:

    DB=DA×DA/255

    for i in range(height):
        for j in range(width):
            gray = int(grayImage[i,j])*int(grayImage[i,j]) / 255
            result[i,j] = np.uint8(gray)
    

    2、对数变换

    在这里插入图片描述
    其中c为尺度比较常数,DA为原始图像灰度值,DB为变换后的目标灰度值。

    def log(c, img):
        output = c * np.log(1.0 + img)
        output = np.uint8(output + 0.5)
        return output
    

    对数变换对于整体对比度偏低并且灰度值偏低的图像增强效果较好。

    3、伽玛变换

    在这里插入图片描述
    当γ>1时,会拉伸图像中灰度级较高的区域,压缩灰度级较低的部分。
    当γ<1时,会拉伸图像中灰度级较低的区域,压缩灰度级较高的部分。
    当γ=1时,该灰度变换是线性的,此时通过线性方式改变原图像。

    展开全文
  • 图像线性与非线性变换

    千次阅读 2020-01-19 13:30:08
    2、对数、指数变换、取反等多种非线性变换的效果对比 变换结果与分析 分段线性变换 1)变换函数 2)分段线性变换结果 3)分段线性变换对比分析 通过变换,将灰度值小于82的变小,将灰度值大于173的增大,...

    变换目标

    1、分段线性变换各种情况的变换效果对比
    2、对数、指数变换、取反等多种非线性变换的效果对比

    变换结果与分析

    分段线性变换
    1)变换函数
    在这里插入图片描述
    2)分段线性变换结果
    在这里插入图片描述
    3)分段线性变换对比分析
    通过变换,将灰度值小于82的变小,将灰度值大于173的增大,处于82与173之间的被拉伸。
    对数变换
    1)变换函数

    在这里插入图片描述
    2)对数变换结果
    在这里插入图片描述
    3)对数变换分析
    低灰度值区域被拉伸,高灰度值区域被缩小,常数c越大,图像灰度值越集中于255,常数c越接近0,图像灰度值越接近于0.
    指数变换
    1)变换函数
    在这里插入图片描述
    2)指数变换结果
    在这里插入图片描述
    3)指数变换分析:
    当指数大于1,图像灰度值减小,当指数小于1大于0,回想灰度值增大。
    取反变换
    1)取反变换函数
    在这里插入图片描述
    2)取反变换结果
    在这里插入图片描述
    3)取反变换对比分析
    增强了图像暗色区域中的白色或灰色细节,特别是黑色面积在尺寸上占主导地位的时候,效果逐渐明显。

    代码

    分段线性变换

    %Write  by 长安 Rjex
    %分段线性变换各种情况的变换效果对比
    %name为图像文件名,(r1,s1),(r2,s2)为变换点
    function B = pielinear(name,r1,s1,r2,s2)I = imread(name); 
    if r1>r2||s1>s2
       error(message('MATLAB:pieLinear:invalidCoordinate'))
    end 
    A=rgb2gray(I);B = A; %确定分段函数方程
    syms k b;
    [k1,b1] =solve([k*r1+b==s1, 0*k+b==0], k,b);
    [k2,b2] =solve([k*r2+b==s2, k*r1+b==s1], [k,b]);
    [k3,b3] =solve([k*r2+b==s2, k*255+b==255], [k,b]); %符号变量转换成数值常量
    k1 = double(k1);
    k2 = double(k2);
    k3 = double(k3);
    b1 = double(b1);
    b2 = double(b2);b3 = double(b3); %分段线性变换
    for i = 1 : size(A,1)
        for j = 1 : size(A,2)    
            if A(i,j)<=r1       
                 B(i,j) = double(A(i,j))*k1+b1; %此处须将A浮点化,否则对A的算术运算范围为0~255        
            elseif 
                 A(i,j)>r1&&A(i,j)<=r2            
                 B(i,j) = double(A(i,j))*k2+b2;        
             else            
                 B(i,j) = double(A(i,j))*k3+b3;        
             end    
         end
    end %原图与对比度拉伸后的图像
    
    figure(1);
    subplot(2,2,1),imshow(A),title('(a)原始图像');
    subplot(2,2,2),imhist(A),title('(b)原始直方图');
    subplot(2,2,3),imshow(B),title('(c)分段线性变换后的图像');
    subplot(2,2,4),imhist(B),title('(d)分段线性变换后的直方图'); %分段函数的表示
    
    figure(2);
    x=0:1:255;y=(k1*x+b1).*(x>=0&x<=r1)+(k2*x+b2).*(x>r1&x<=r2)+(k3*x+b3).*(x>r2&x<=255);plot(x,y);axis([0 255 0 255]),title('分段函数'),xlabel('r'),ylabel('T(r)'); 

    反转(取反)变换

    %Write  by 长安 Rjex
    %图像反转的变换效果对比%name为图像文件名
    function B = negatrans(name)I = imread(name);
    A=rgb2gray(I);
    B = A; %图像反转
    for i = 1 : size(A,1)
        for j = 1 : size(A,2)      
              B(i,j) = 255-double(A(i,j));
               %此处须将A浮点化,否则对A的算术运算范围为0~255    
        end
    end %原图与图像反转后的图像
    
    figure(1);
    subplot(2,2,1),imshow(A),title('(a)原始图像');
    subplot(2,2,2),imhist(A),title('(b)原始直方图');
    subplot(2,2,3),imshow(B),title('(c)反转后的图像');
    subplot(2,2,4),imhist(B),title('(d)反转后的直方图'); %反转函数的表示
    
    figure(2);
    x=0:1:255;y=255-x;plot(x,y),axis([0 255 0 255]),title('反转函数'),xlabel('r'),ylabel('T(r)'); 

    对数变换

    %Write  by 长安 Rjex
    %对数变换各种情况的变换效果对比%name为图像文件名,c为对数变换中的常数,即:clog(r+1)
    function B = logtrans(name,c)I = imread(name); 
    A=rgb2gray(I);B = A; %对数变换
    for i = 1 : size(A,1)
        for j = 1 : size(A,2)       
             B(i,j) = c*log(double(A(i,j))+1); %此处须将A浮点化,否则对A的算术运算范围为0~255    
        end
    end %原图与对数变换后的图像
    
    figure(1);
    subplot(2,2,1),imshow(A),title('(a)原始图像');
    subplot(2,2,2),imhist(A),title('(b)原始直方图');
    subplot(2,2,3),imshow(B),title('(c)对数变换后的图像');
    subplot(2,2,4),imhist(B),title('(d)对数变换后的直方图'); %对数函数的表示
    
    figure(2);
    x=0:1:255;y=c*log(x+1);plot(x,y);axis([0 255 0 255]),title('对数函数'),xlabel('r'),ylabel('T(r)'); 

    指数变换

    %Write  by 长安 Rjex
    %指数变换各种情况的变换效果对比%name为图像文件名
    function B = indextrans(name,c,r)
    I = imread(name); 
    A=rgb2gray(I);B = A; %指数变换
    for i = 1 : size(A,1)
        for j = 1 : size(A,2)       
             B(i,j) = (double(A(i,j))^r.*c)/(255^r)*255; %此处须将A浮点化,否则对A的算术运算范围为0~255    
        end
    end %原图与指数变换后的图像
    
    figure(1);
    subplot(2,2,1),imshow(A),title('(a)原始图像');
    subplot(2,2,2),imhist(A),title('(b)原始直方图');
    subplot(2,2,3),imshow(B),title('(c)指数变换后的图像');
    subplot(2,2,4),imhist(B),title('(d)指数变换后的直方图'); %指数函数的表示
    
    figure(2);
    x=0:1:255;y=(x.^r.*c)/(255^r)*255;plot(x,y);axis([0 255 0 255]),title('指数函数'),xlabel('r'),ylabel('T(r)');
    展开全文
  • 数字图像的灰度拉伸

    千次阅读 2021-02-14 10:37:40
    成像系统只能获取一定亮度范围内的值。由于成像系统的量化级数有限,常...2、非线性拉伸使用非线性函数对图像进行拉伸变化,常用的非线性函数有指数函数、对数函数、平方根、高斯函数等。其中,指数变换对于图像中亮

    成像系统只能获取一定亮度范围内的值。由于成像系统的量化级数有限,常出现对比度不足的弊病,图像看起来比较模糊、暗淡。通过灰度拉伸可加大图像的对比度,使图像变得更加清晰。

    灰度拉伸分为线性拉伸和非线性拉伸两种方法。

    1、线性拉伸对像素值进行线性比例变化,主要有以下几种方法:

    • 全域线性拉伸
    • 2%线性拉伸
    • 分段线性拉伸
    • 灰度窗口切片(可将某一区间内的灰度级和其他部分分开)

    2、非线性拉伸使用非线性函数对图像进行拉伸变化,常用的非线性函数有指数函数、对数函数、平方根、高斯函数等。其中,指数变换对于图像中亮的部分,它扩大了灰度间隔,突出了细节;对于暗的部分,它缩小了灰度间隔,弱化了细节。与指数变换相反,对数变换主要用于拉伸图像中暗的部分,而压缩亮的部分。

    展开全文
  • 非线性滤波非线性滤波是原始数据与滤波结果是一种逻辑关系,即用逻辑运算实现,而线性滤波采用的是算术运算结果。中值滤波(Median filter)中值滤波介绍中值滤波是一种典型的非线性滤波技术,基本思想就是用像素点邻域...
  • 图像灰度的非线性变换平方变换对数变换 平方变换 将灰度进行平方再除以255,用于 降级图像亮度 增强亮部对比度 减缓暗部对比度 对比度可以看作灰度的斜率 对数变换
  • 图像灰度非线性变换 文章目录1 原理2 Matlab实现3 OpenCV实现3.1 实现3.2 注意4 效果图 1 原理   图像灰度的非线性变换主要有对数变换、指数变换、幂次变换等。本文主要讨论对数变换。   对数变换的基本形式...
  • python2%线性拉伸

    千次阅读 2020-05-01 19:20:33
    python实现2%的线性拉伸
  • 1.图像线性变换 图像线性变换 S=k×r+b S=k\times r+b S=k×r+b 其中 rrr 为输入变量,SSS为输出变量,k,bk,bk,b为线性变换中的倍数因子和偏移因子。 当0<k<10<k<10<k<1时,对灰度压缩,...
  • 本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的、不同方法的处理,以达到对图像进行去噪、锐化等一系列的操作。...
  • 图像的灰度线性变换是通过建立灰度映射来调整原始图像的灰度,从而改善图像的质量,凸显图像的细节,提高图像的对比度。灰度线性变换的计算公式如下所示 g(x)=αf(x)+β (1)图像灰度上移变换:DB=DA + 50 (2)...
  • 3 非线性灰度变换 3.1 对数变换 3.2 伽马变换 参考资料 1 灰度变换简介 灰度变换是图像增强的一种重要手段,用于改善图像显示效果,属于空间域处理方法,它可以使图像动态范围加大,使图像对比度扩展,图像更加...
  • 人类所获得的信息大约70%来自于图像,数字图像处理是计算机对采样量化的图像进行去除噪声、增强、复原、分割、提前特征等处理的方法和技术,它对一个物体的数字表示施加一系列的操作,以得到所期望的结果。...
  • 本文主要讲述基于VC++6.0 MFC图像处理的应用知识,主要结合自己大三所学课程《数字图像处理》及课件进行讲解,主要通过MFC单文档视图实现显示BMP图片点运算处理,包括图像灰度线性变换、灰度非线性变换、图像阈值化...
  • 首先从全局出发,使用线性函数提升亮度到非线性函数 夜晚图像最显著的特点就是图像亮度和对比度低,细节辨识程度差,以这个问题为解决目标,最简单直接的方法就是使用线性函数提升图像亮度。然而这种方法缺点也很...
  • 本文主要讲述基于VC++6.0 MFC图像处理的应用知识,主要结合自己大三所学课程《数字图像处理》及课件进行讲解,主要通过MFC单文档视图实现显示BMP图片点运算处理,包括图像灰度线性变换、灰度非线性变换、图像阈值化...
  • 对比度线性拉伸

    千次阅读 2018-01-20 00:38:23
    设原图灰度值范围[a,b],灰度拉伸指定的灰度值范围是[c,d],x为某点原来的灰度值,y为拉伸后的灰度值,则有以下关系 其中 img1 = imread('1.tif'); figure() subplot(121) imshow(img1) title('原图像...
  • 一、直方图均衡化概述直方图均衡化(Histogram Equalization)又称直方图平坦化,实质上是对图像进行非线性拉伸,重新分配图像象元值,使一定灰度范围内象元值的数量大致相等。这样,原来直方图中间的峰顶部分对比度得到...
  • 线性灰度拉伸程序 % mg为拉伸后的结果 % A为待拉伸图像 % a、b为待拉伸的范围 % c、d为相应拉伸后的范围,其中a,c<d
  • 图像增强的目的: 图像增强的目标是通过处理图像,提高图像重要细节信息或者目标的辨识度,使其比原始图像更适应于特定应用。 不增加图像的信息内容,但是增加特定...例:读取 dicom 图像,完成以下操作: 利用线性
  • 吴传富 朱同波 (闽南理工学院,福建 泉州 362700) 摘 要:简要介绍图像增强的概念和一些图像增强的算法,从图像的直方图均衡化、对比度线性展宽、动态范围非线性调整和伪彩色增强等几个方面对图像增强算法进行讨论和...
  • 图像拉伸

    千次阅读 2018-11-12 14:54:20
    图像拉伸是最基础的图像处理方法,主要用来改善图像显示的对比度,道路提取流程中往往首先要对图像进行拉伸的预处理。图像拉伸主要有三种方式:灰度拉伸、直方图均衡化和直方图规定化。下面主要看看灰度拉伸: 灰度...
  • 福建泉州 362700)摘要:简要介绍图像增强的概念和一些图像增强的算法,从图像的直方图均衡化、对比度线性展宽、动态范围非线性调整和伪彩色增强等几个方面对图像增强算法进行讨论和研究,并通过MATLAB软件平台,给出...
  • 人工智能学习离不开实践的验证,推荐大家可以多在FlyAI-AI竞赛服务平台多参加训练和竞赛,以此来提升自己的能力。FlyAI是为AI开发者提供数据竞赛并支持GPU离线训练的一站式服务平台。... 下面主要学习图像灰度化...
  • 4. 图像显示和拉伸

    2019-10-22 17:15:38
    第四章 图像显示和拉伸 4.1 色彩模型和色彩空间 4.1.1 颜色的特征 人的眼睛中的两类细胞:锥细胞(色彩)和棒细胞(明暗) 一般女性锥细胞更多一些,男性棒细胞更多一些 彩色 在混色系统中,色彩的来源是光 ...
  • 转自https://blog.csdn.net/eastmount/article/details/46312145本文主要讲述基于VC++6.0 ...包括图像灰度线性变换、灰度非线性变换、图像阈值化处理、图像均衡化处理等知识,并结合前一篇论文灰度直方图进行展示 。...

空空如也

空空如也

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

图像非线性拉伸