精华内容
下载资源
问答
  • 主要介绍了Python图像灰度变换及图像数组操作的相关资料,需要的朋友可以参考下
  • import cv2 import numpy as np import matplotlib.pyplot as plt img = cv2.imread("lena...# 图像反转 # 方法1 img1 = (255-img).astype(np.uint8) # 方法2 img2 = img.copy() H,W = img2.shape print(W,H) for i...
    import cv2
    import numpy as np
    import  matplotlib.pyplot as plt
    img = cv2.imread("lena.jpg",0)
    
    # 图像反转
    # 方法1
    img1 = (255-img).astype(np.uint8)
    
    # 方法2
    img2 = img.copy()
    H,W = img2.shape
    print(W,H)
    for i in range(H):
        for j in range(W):
            img2[i,j] = 255-img2[i,j]
    # 图像显示
    plt.figure(figsize =(10,8),dpi=80)
    plt.subplot(121)
    plt.imshow(img1,cmap="gray")
    plt.subplot(122)
    plt.imshow(img2,cmap="gray")
    plt.show()
    # 图像对数变换
    '''
    img3 = img.copy()
    c = 42
    img3 = c*np.log(img3+1)
    img3 = img3.astype(np.uint8)
    print(img3)
    plt.figure(figsize =(10,8),dpi=80)
    plt.subplot(111)
    plt.imshow(img3,cmap="gray")
    plt.show()
    '''
    # 图像伽马变换
    '''
    img4 = img.copy()
    c = 0.0001
    t = 0.5
    img4 = c*np.power(img4,t)
    plt.figure(figsize =(10,8),dpi=80)
    plt.subplot(121)
    plt.imshow(img,cmap="gray")
    plt.subplot(122)
    plt.imshow(img4,cmap="gray")
    plt.show()
    '''
    

    输出结果:
    在这里插入图片描述

    展开全文
  • Python3+OpenCV】实现图像处理—灰度变换

    千次阅读 多人点赞 2020-04-20 20:41:15
    本篇推文共计1000个字,阅读时间约3分钟。OpenCV是一个C++库,目前流行的计算机视觉编程库,用于实时处理计算机视觉方面的问题,它涵盖了很多计算机视觉领域的模块。在Python中常...

    本篇推文共计1000个字,阅读时间约3分钟。

    OpenCV是一个C++库,目前流行的计算机视觉编程库,用于实时处理计算机视觉方面的问题,它涵盖了很多计算机视觉领域的模块。在Python中常使用OpenCV库实现图像处理。

    本文将介绍如何在Python3中使用OpenCV实现对图像处理的灰度变换:

    灰度化处理,二值化处理,伽马变换,对数变换反向变换

    电脑环境准备

    Python版本:

    Python3.7

    OpenCV版本:

    OpenCV4.1

    知识准备

    一张图片是由像素点矩阵构成,我们对图片进行操作即为对图片的像素点矩阵进行操作。我们只要在这个像素点矩阵中找到这个像素点的位置,比如第x行,第y列。所以这个像素点在这个像素点矩阵中的位置就可以表示成(x,y)

    同时因为一个像素点的颜色通常包括R、G、B三个分量,分别显示出红、绿、蓝三个颜色,灰度化就是使彩色图像的R、G、B三个分量相等的过程。灰度图像中每个像素仅具有一种样本颜色,其灰度是位于黑色与白色之间的多级色彩深度,灰度值大的像素点比较亮,反之比较暗,像素值最大为255(表示白色),像素值最小为0(表示黑色)。

    No.1

    灰度化处理

    Opencv中图片的灰度化:将一个像素点的三个颜色变量相等,R=G=B,此时该值称为灰度值。

    本文提供的灰度化处理有两种方法(灰度化处理不止这两种)

    方法1:直接将原图读成灰度图像

    img1=cv2.imread('girl.png',0)
    方法2:将原图进行灰度化处理
    
    #灰度化处理2:
    gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    
    import cv2
    
    #读入原始图像
    img=cv2.imread('girl.png',1)
    
    #灰度化处理1:直接读入灰度化图像
    img1=cv2.imread('girl.png',0)
    
    #灰度化处理2:
    gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    
    #通过窗口展示图片 第一个参数为窗口名 第二个为读取的图片变量
    cv2.imshow('img',img)
    cv2.imshow('gray1',img1)
    cv2.imshow('gray2',gray)
    
    #暂停cv2模块 不然图片窗口一瞬间即就会消失 观察不到
    cv2.waitKey(0)
    

    运行程序后,显示如下:

    No.2

    二值化处理

    Opencv中的图像的二值化,就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的只有黑和白的视觉效果。

    cv.threshold ()函数是图像二值化函数

    其中,第二个参数是判定像素点的临界值。超过了这个点,将会被划分为255,低于这个点,将会被划分为0。具体的参数0~255可以自行根据需要调节。

    import cv2
    
    #读入原始图像
    img=cv2.imread('girl.png',1)
    
    #灰度化处理
    img1=gray.copy()
    
    #灰度化处理:此灰度化处理用于图像二值化
    gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    
    #二值化函数
    cv2.threshold(gray,140,255,0,gray)#二值化函数
    
    #通过窗口展示图片 第一个参数为窗口名 第二个为读取的图片变量
    cv2.imshow('img',img)
    cv2.imshow('gray',img1)
    cv2.imshow('Binarization',gray)
    
    #暂停cv2模块 不然图片窗口一瞬间即就会消失 观察不到
    cv2.waitKey(0)

    运行程序后,显示如下:

    No.3

    灰度图像的伽马变换

    Opencv中的伽马变换是用来图像增强,提升了暗部细节,简单来说就是通过非线性变换,让图像从暴光强度的线性响应变得更接近人眼感受的响应,即将漂白(相机曝光)或过暗(曝光不足)的图片,进行矫正。

    伽马值小于1时,会拉伸图像中灰度级较低的区域,同时会压缩灰度级较高的部分

    伽马值大于1时,会拉伸图像中灰度级较高的区域,同时会压缩灰度级较低的部分

    import cv2
    import copy
    
    #读入原始图像
    img=cv2.imread('girl.png',1)
    
    #灰度化处理
    img1=cv2.imread('girl.png',0)
    
    #灰度化处理:此灰度化处理用于图像二值化
    gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    
    #伽马变换
    gamma=copy.deepcopy(gray)
    rows=img.shape[0]
    cols=img.shape[1]
    for i in range(rows):
        for j in range(cols):
            gamma[i][j]=3*pow(gamma[i][j],0.8)
    
    #通过窗口展示图片 第一个参数为窗口名 第二个为读取的图片变量
    cv2.imshow('img',img)
    cv2.imshow('gray',img1)
    cv2.imshow('gamma',gamma)
    
    #暂停cv2模块 不然图片窗口一瞬间即就会消失 观察不到
    cv2.waitKey(0)

    运行程序后,显示如下:

    No.4

    灰度图像的对数变换

    Opencv中的对数变换:由于对数曲线在像素值较低的区域斜率大,在像素值较高的区域斜率较小,所以图像经过对数变换后,较暗区域的对比度将有所提升。可用于增强图像的暗部细节。

    灰度图像的对数变换一般表示如公式所示:

    DB=C*log(1+ DA)

    其中c为尺度比较常数,DA为原始图像灰度值,DB为变换后的目标灰度值。

    如下图所示,它表示对数曲线下的灰度值变化情况。

    由于对数曲线在像素值较低的区域斜率大,在像素值较高的区域斜率较小,所以图像经过对数变换后,较暗区域的对比度将有所提升。这种变换可用于增强图像的暗部细节,从而用来扩展被压缩的高值图像中的较暗像素。

    对数变换实现了扩展低灰度值而压缩高灰度值的效果,被广泛地应用于频谱图像的显示中。一个典型的应用是傅立叶频谱,其动态范围可能宽达0~106直接显示频谱时,图像显示设备的动态范围往往不能满足要求,从而丢失大量的暗部细节;而在使用对数变换之后,图像的动态范围被合理地非线性压缩,从而可以清晰地显示。

    import cv2
    import copy
    import math
    
    #读入原始图像
    img=cv2.imread('girl.png',1)
    
    #灰度化处理
    img1=cv2.imread('girl.png',0)
    
    #灰度化处理:此灰度化处理用于图像二值化
    gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    
    # 对数变换
    logc = copy.deepcopy(gray)
    rows=img.shape[0]
    cols=img.shape[1]
    for i in range(rows):
        for j in range(cols):
            logc[i][j] = 3 * math.log(1 + logc[i][j])
    
    #通过窗口展示图片 第一个参数为窗口名 第二个为读取的图片变量
    cv2.imshow('img',img)
    cv2.imshow('gray',img1)
    cv2.imshow('logc',logc)
    
    #暂停cv2模块 不然图片窗口一瞬间即就会消失 观察不到
    cv2.waitKey(0)

    运行程序后,显示如下:

    No.5

    灰度图像的反色变换

    Opencv中的反色变换:对原图像像素值的颜色进行反转,即黑色变为白色,白色变为黑色。

    import cv2
    import copy
    import math
    
    #读入原始图像
    img=cv2.imread('girl.png',1)
    
    #灰度化处理
    img1=cv2.imread('girl.png',0)
    
    #灰度化处理:此灰度化处理用于图像二值化
    gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    
    # 反色变换
    cover=copy.deepcopy(gray)
    rows=img.shape[0]
    cols=img.shape[1]
    for i in range(rows):
        for j in range(cols):
            cover[i][j]=255-cover[i][j]
    
    #通过窗口展示图片 第一个参数为窗口名 第二个为读取的图片变量
    cv2.imshow('img',img)
    cv2.imshow('gray',img1)
    cv2.imshow('cover',cover)
    
    #暂停cv2模块 不然图片窗口一瞬间即就会消失 观察不到
    cv2.waitKey(0)

    运行程序后,显示如下:

    本期推文到此结束,欢迎各位读者关注本公众号。

    本公众号将开设【Python3+OpenCV】专题,

    并陆续推出相关系列文章,篇篇精彩。

    欢迎读者给本公众号打个星标,让你每天学习新知识,探索人工智能的奥妙。

    往期回顾

    【Python3+OpenCV】实现图像处理—基本操作篇

    【玩转华为云】教你用ModelArts实现数据集的图像标注

    【玩转华为云】手把手教你ModelArts实现目标物体检测

    【玩转华为云】基于ModelArts实现行人车辆检测

    【玩转腾讯云】人脸融合,看你未来孩子长什么样

    【玩转腾讯云】使用API快速构建文字识别小工具

    架构师之路:星环大数据架构师的培训心得

    武汉加油,中国加油!

    欢迎各位读者在下方进行提问留言

    ☆ END ☆

    你与世界

    只差一个

    公众号

    扫描上方二维码,即可获取“编程学习资料”大礼包一份

    展开全文
  • 图像线性灰度变换原理效果代码 原理 DB为变换后的灰度值,DA为变换前的灰度值,a为缩放率,b为截距。 a b 含义 1 0 原有灰度 1 !0 灰度上移/下移 -1 255 灰度反转 >1 增强对比度 0<a<1 ...

    图像线性灰度变换

    原理

    在这里插入图片描述
    DB为变换后的灰度值,DA为变换前的灰度值,a为缩放率,b为截距。

    ab含义
    10原有灰度
    1!0灰度上移/下移
    -1255灰度反转
    >1增强对比度
    0<a<1减小对比度
    <0反色(底片效果)

    效果

    在这里插入图片描述

    代码

    img = cv2.imread('Panda.jpg')
    img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    rows,cols = img_gray.shape
    
    #50
    matrix_50 = np.ones((rows,cols),dtype=np.uint8)*50
    img_gray1 = cv2.add(img_gray,matrix_50)
    img_gray2 = img_gray*1.5
    img_gray3 = img_gray*0.7
    img_gray4 = -img_gray+256
    img_gray5 = cv2.subtract(img_gray,matrix_50)
    
    plt.subplot(231)
    plt.imshow(img_gray,'gray',vmin=0,vmax=255)
    plt.title('原图')
    plt.subplot(232)
    plt.imshow(img_gray1,'gray',vmin=0,vmax=255)
    plt.title('a=1,b=50')
    plt.subplot(233)
    plt.imshow(img_gray5,'gray',vmin=0,vmax=255)
    plt.title('a=1,b=-50')
    plt.subplot(234)
    plt.imshow(img_gray2,'gray',vmin=0,vmax=255)
    plt.title('a=1.5,b=0')
    plt.subplot(235)
    plt.imshow(img_gray3,'gray',vmin=0,vmax=255)
    plt.title('a=0.7,b=0')
    plt.subplot(236)
    plt.imshow(img_gray4,'gray',vmin=0,vmax=255)
    plt.title('a=-1,b=255')
    plt.show()
    print(img_gray4)
    
    展开全文
  • 图像增强:灰度变换Python实现)

    千次阅读 2020-05-15 08:40:00
    图像增强能够有目的地强调图像地整体或是局部特征,将不清晰地图像变得更为清晰,或是强调某些感兴趣的特征,使其改善图像质量,加强图像判别和识别的效果。现有的图像增强的方法非常多,今天我们主要...

    图像增强能够有目的地强调图像地整体或是局部特征,将不清晰地图像变得更为清晰,或是强调某些感兴趣的特征,使其改善图像质量,加强图像判别和识别的效果。

    现有的图像增强的方法非常多,今天我们主要介绍空间域中的灰度变换方法,并用Python将其一一实现。灰度变换也被称为图像的点运算(只针对图像的某一像素点),是所有图像处理技术中最简单的技术。

    我们首先对所有原始图像都进行如下的读取,转换为灰度图像,并且读取图像的长宽。

    image=Image.open(img_path)
    image=image.convert('L')
    x=image.size[0]
    y=image.size[1]
    

    Image negatives

    图像像素反转变化,用互补灰度代替原灰度。若是8位的灰度图,则原来像素值为0的转为255,如下面公式所示。

    s=255−r

    此操作能够有效地增强黑色区域中的一些白色或是灰色细节,比如下图,

    在此图中,我们可能重点关注的是这些黑色中的白色部分,因而采用反转变换。

    我们根据定义,逐像素进行反转操作。

    for i in range(x):
        for j in range(y):
            pixel=image.getpixel((i,j))
            image.putpixel((i,j),255-pixel)
    

    Brightness normalization

    做一个简单的归一化,K是尺度因子,增强对比度,使黑的更黑,亮的更亮,公式如下,

    s=K∗((r−rmin)/(rmax−rmin))

    先计算出像素点的最大值和最小值,再按公式进行归一化,进而把像素值进行更新。

    table=[]
    for i in range(256):
        table.append(200*(i-pixel_min)/(pixel_max-pixel_min))
    image=image.point(table,'L')
    

    Power-law transformation

    指数变换可以做到扩展或者压缩灰度的作用。指数小于1时,作用与对数变换相似,将低亮度区域拉伸,变得更亮。

    table=[]
    for i in range(256):
        table.append(100*i**0.5)
    
    image=image.point(table,'L')
    

    Log transformation

    对数变换将低亮度区拉伸,将其余部分进行压缩,使得整体亮度增加,公式如下,

    s=K∗log(1+r)

    比如下图原图,其黑色部分其实有一些‘隐藏’的亮度,使用对数变换使其更加明显。

    table=[]
    for i in range(256):
        table.append(40*math.log1p(i))
    image=image.point(table,'L')
    ——END——
    

    推荐阅读

    我用Python写了一个论文降重工具

    十分钟掌握数据可视化基本操作(上)

    十分钟掌握数据可视化基本操作(下)

    展开全文
  • 11111.灰度化1.1浮点算法1.2.整数算法1.3.平均值法1.4.移位法1.5.单通道法(只取绿色通道)2.二值化2.1.取中间阀值1272.2.取所有像素点灰度的平均值3....参考《Python图像灰度变换及图像数组操作》实现以下几种灰...
  • 灰度变换图像增强的一种重要手段,用于改善图像显示效果,属于空间域处理方法,它可以使图像动态范围加大,使图像对比度扩展,图像更加清晰,特征更加明显。灰度变换其实质就是按一定的规则修改图像每一个像素的...
  • [Python图像处理] 十五.图像灰度线性变换

    万次阅读 多人点赞 2019-03-28 00:08:25
    前一篇文章讲解了图像灰度化处理的知识,结合OpenCV调用cv2.cvtColor()函数实现图像...1.图像灰度上移变换:DB=DA+50 2.图像对比度增强变换:DB=DA*1.5 3.图像对比度减弱变换:DB=DA*0.8 4.图像灰度反色变换:DB=255-DA
  • 图像灰度的非线性变换平方变换对数变换 平方变换 将灰度进行平方再除以255,用于 降级图像亮度 增强亮部对比度 减缓暗部对比度 对比度可以看作灰度的斜率 对数变换
  • 下面小编就为大家带来一篇Python 将RGB图像转换为Pytho灰度图像的实例。具有很好的参考价值。希望对大家有所帮助。一起跟随小编过来看看吧
  • 图像灰度线性变换 假定原图像f(x,y)f(x,y)f(x,y)的灰度范围为[a,b],变换后图像g(x,y)g(x,y)g(x,y)灰度扩展为[c,d],则根据线性方程式可以得到: (9-1)g(x,y)=d−cb−a[f(x,y)−a]+c g(x,y) = \frac{d - c}{b - a}[f...
  • 在数字图像处理学习笔记(八)中,已对图像增强之线性变换、对数变换、幂律变换、分段线性变换灰度级分层等做过详细理论论述,本文将对上述理论知识做实践方面的实现。 具体理论知识可参考我之前的博文:数字图像...
  • python图像数组操作与灰度变换

    万次阅读 多人点赞 2016-01-27 11:03:32
    Python图像数组操作使用python以及numpy通过直接操作图像数组完成一系列基本的图像处理numpy简介:NumPy是一个非常有名的 Python 科学计算工具包,其中包含了大量有用的工具,比如数组对象(用来表示向量、矩阵、图像等...
  • 1. 灰度变换 1.1 原理 当一幅rgb图像每一个点的三个彩色分量的值都相等,即R=G=B。我们就可以用其中一维来表示这个图片,因为三个分量都相等。这一个过程就叫做“灰度化”,灰度化以后得到的图片矩阵会从3维降至2维...
  • 基于python图像变换

    2018-05-24 11:47:17
    最基本的图像变换,将彩色图变换灰度度,并将其显示出来
  • python中opencv图像处理实验(一)---灰度变换

    万次阅读 多人点赞 2018-05-03 16:26:17
    本篇则记录对灰度图像进行一些常规处理。一张图片是由像素点矩阵构成,我们对图片进行操作即为对图片的像素点矩阵进行操作。我们只要在这个像素点矩阵中找到这个像素点的位置,比如第x行,第y列,所以这个像素点在这...
  • 这里写目录标题本节的目标背景灰度变换和空间滤波基础 本节的目标 了解空间域图像处理的意义,以及它与变换域图像处理的区别 熟悉灰度变换所有的主要技术 了解直方图的意义以及如何操作直方图来增强图像 了解空间...
  • 前一篇文章讲解了图像灰度化处理及线性变换知识,结合OpenCV调用cv2.cvtColor()函数实现图像灰度操作,本篇文章主要讲解非线性变换,使用自定义方法对图像进行灰度化处理,包括对数变换和伽马变换。本文主要讲解灰度...
  • opencv-python 图像灰度变换

    千次阅读 2018-11-24 20:59:15
      灰度变换作为一种图像预处理技术可以显著的改善图像的质量,下面将介绍几种灰度变换的方法 1. gamma 变换   Gamma变换是对输入图像灰度值进行的非线性操作,使输出图像灰度值与输入图像灰度值呈指数关系: s=...
  • 图像增强的定义:是通过一定手段对原图像附加...基于空域的算法处理时直接对图像灰度级做运算,基于频域的算法是在图像的某种变换域内对图像的变换系数值进行某种修正,是一种间接增强的算法。空域法:对图像中的像...
  • 图像灰度直方图灰度直方图是图像灰度级的函数,用来描述每个灰度级在图像矩阵中的像素个数或者占有率。直方图显示图像数据时会以左暗右亮的分布曲线形式呈现出来。横坐标是灰度级,纵坐标是该灰度级出现的频率。图像...
  • 一、图像灰度化处理1、最大值灰度处理方法2、平均灰度处理方法3、加权平均灰度处理方法二、图像灰度线性变换1、图像灰度上移变换2、图像对比度增强变换3、图像对比度减弱变换4、图像灰度反色变换三、图像灰度非线性...
  • 对于灰度图,首先要了解的是灰度直方图,也就是整体的图像中,灰度值的分布情况,通过直方图的形式来显示图片中是高灰度值的区域偏多还是低灰度值的区域偏多或者是其他情况,来指导我们后续的其他操作。以我们的之前...
  • opencv python图像灰度变换

    千次阅读 2018-08-28 11:18:23
    python中opencv图像处理实验(一)—灰度变换 ...
  • 这是学习第三章的时候的灰度变换的知识,就是找一个函数对原图像的每个像素点的灰度值重新计算,得到一个新得图像。 1. 图像反转 一幅图像的灰度级范围为[0,L-1],那么反转函数是 s = L-1-r (原来黑的变亮,亮的变黑...
  • 使用python以及numpy通过直接操作图像数组完成一系列基本的图像处理 numpy简介: NumPy是一个非常有名的 Python 科学计算工具包,其中包含了大量有用的工具,比如数组对象(用来表示向量、矩阵、图像等)以及线性代数...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,417
精华内容 3,766
关键字:

图像灰度变换python

python 订阅