精华内容
下载资源
问答
  • 图像
    千次阅读
    2022-03-23 11:07:32

            图像增强是图像处理的一个重要环节,早期的图像处理就是从图像增强开始的,人们研究对质量低的图像进行处理以获得改善质量后的图像。现今的图像增强还为后续的图像处理,如图像信息提取、图像识别等,提供更高识别度的图像。

            从图像处理技术来看,图像的摄取、编码、传输和处理过程中有许多因素可以使图像变模糊。如摄取过程中的聚焦不良,编码中的量化步骤使得图像的高频分量损失,处理过程中的对图像进行放大时由于缩放算法具有低通滤波性质而导致图像变得柔和等等。图像锐化正是针对这个问题对图像的边缘进行增强和高频分量进行补偿,使得画质清晰锐利,视觉感受良好,为后续的处理提供具有更高辨析度的图像。

    一、图像锐化基本原理

            研究表明,各种图像模糊的物理过程的数学模型一般包含有求和、平均或者积分运算。那么与此相反,图像的锐化过程就是包含有差分和微分的运算。

            图像锐化是图像增强的一个经典问题。长期以来在出版业中使用的图像锐化处理是从原始图像自身减去低通滤波后的图像而得到一幅清晰锐利的图像,这种处理称为图像的反锐化掩蔽,也称钝化模板,可以表示为

    f_{s}(x,y)=f_{o}(x,y)-f_{lp}(x,y)

            反锐化掩蔽的一般形式称为高频提升滤波和高频增强滤波。高频提升滤波通过将

    更多相关内容
  • 上一篇文章介绍图像几何变换,包括图像镜像、图像仿射和图像透视。这篇文章将介绍图像量化处理,即将图像像素点对应亮度的连续变化区间转换为单个特定值的过程。希望文章对您有所帮助,如果有不足之处,还请海涵。

    欢迎大家来到“Python从零到壹”,在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界。所有文章都将结合案例、代码和作者的经验讲解,真心想把自己近十年的编程经验分享给大家,希望对您有所帮助,文章中不足之处也请海涵。Python系列整体框架包括基础语法10篇、网络爬虫30篇、可视化分析10篇、机器学习20篇、大数据分析20篇、图像识别30篇、人工智能40篇、Python安全20篇、其他技巧10篇。您的关注、点赞和转发就是对秀璋最大的支持,知识无价人有情,希望我们都能在人生路上开心快乐、共同成长。

    该系列文章主要讲解Python OpenCV图像处理和图像识别知识,前期主要讲解图像处理基础知识、OpenCV基础用法、常用图像绘制方法、图像几何变换等,中期讲解图像处理的各种运算,包括图像点运算、形态学处理、图像锐化、图像增强、图像平滑等,后期研究图像识别、图像分割、图像分类、图像特效处理以及图像处理相关应用。

    上一篇文章介绍图像几何变换,包括图像镜像、图像仿射和图像透视。这篇文章将介绍图像量化处理,即将图像像素点对应亮度的连续变化区间转换为单个特定值的过程。希望文章对您有所帮助,如果有不足之处,还请海涵。

    下载地址:

    前文赏析:

    第一部分 基础语法

    第二部分 网络爬虫

    第三部分 数据分析和机器学习

    第四部分 Python图像处理基础

    第五部分 Python图像运算和图像增强

    第六部分 Python图像识别和图像处理经典案例

    第七部分 NLP与文本挖掘

    第八部分 人工智能入门知识

    第九部分 网络攻防与AI安全

    第十部分 知识图谱构建实战

    扩展部分 人工智能高级案例

    作者新开的“娜璋AI安全之家”将专注于Python和安全技术,主要分享Web渗透、系统安全、人工智能、大数据分析、图像识别、恶意代码检测、CVE复现、威胁情报分析等文章。虽然作者是一名技术小白,但会保证每一篇文章都会很用心地撰写,希望这些基础性文章对你有所帮助,在Python和安全路上与大家一起进步。


    一.图像量化处理原理

    量化(Quantization)旨在将图像像素点对应亮度的连续变化区间转换为单个特定值的过程,即将原始灰度图像的空间坐标幅度值离散化。量化等级越多,图像层次越丰富,灰度分辨率越高,图像的质量也越好;量化等级越少,图像层次欠丰富,灰度分辨率越低,会出现图像轮廓分层的现象,降低了图像的质量。图8-1是将图像的连续灰度值转换为0至255的灰度级的过程[1-3]。

    在这里插入图片描述

    如果量化等级为2,则将使用两种灰度级表示原始图片的像素(0-255),灰度值小于128的取0,大于等于128的取128;如果量化等级为4,则将使用四种灰度级表示原始图片的像素,新图像将分层为四种颜色,0-64区间取0,64-128区间取64,128-192区间取128,192-255区间取192,依次类推。

    图8-2是对比不同量化等级的“Lena”图。其中(a)的量化等级为256,(b)的量化等级为64,(c)的量化等级为16,(d)的量化等级为8,(e)的量化等级为4,(f)的量化等级为2。

    在这里插入图片描述


    二.图像量化实现

    图像量化的实现过程是建立一张临时图片,接着循环遍历原始图像中所有像素点,判断每个像素点应该属于的量化等级,最后将临时图像显示。下面的代码将灰度图像转换为两种量化等级[4]。

    # -*- coding: utf-8 -*-
    # By:Eastmount
    import cv2  
    import numpy as np  
    import matplotlib.pyplot as plt
    
    #读取原始图像
    img = cv2.imread('lena-hd.png')
    
    #获取图像高度和宽度
    height = img.shape[0]
    width = img.shape[1]
    
    #创建一幅图像
    new_img = np.zeros((height, width, 3), np.uint8)
    
    #图像量化操作 量化等级为2
    for i in range(height):
        for j in range(width):
            for k in range(3): #对应BGR三分量
                if img[i, j][k] < 128:
                    gray = 0
                else:
                    gray = 128
                new_img[i, j][k] = np.uint8(gray)
            
    #显示图像
    cv2.imshow("src", img)
    cv2.imshow("", new_img)
    
    #等待显示
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    其输出结果如图8-3所示,它将灰度图像划分为两种量化等级。

    在这里插入图片描述


    三.图像量化等级对比

    下面的代码分别比较了量化等级为2、4、8的量化处理效果[5]。

    # -*- coding: utf-8 -*-
    # By:Eastmount
    import cv2  
    import numpy as np  
    import matplotlib.pyplot as plt
    
    #读取原始图像
    img = cv2.imread('lena-hd.png')
    
    #获取图像高度和宽度
    height = img.shape[0]
    width = img.shape[1]
    
    #创建一幅图像
    new_img1 = np.zeros((height, width, 3), np.uint8)
    new_img2 = np.zeros((height, width, 3), np.uint8)
    new_img3 = np.zeros((height, width, 3), np.uint8)
    
    #图像量化等级为2的量化处理
    for i in range(height):
        for j in range(width):
            for k in range(3): #对应BGR三分量
                if img[i, j][k] < 128:
                    gray = 0
                else:
                    gray = 128
                new_img1[i, j][k] = np.uint8(gray)
    
    #图像量化等级为4的量化处理
    for i in range(height):
        for j in range(width):
            for k in range(3): #对应BGR三分量
                if img[i, j][k] < 64:
                    gray = 0
                elif img[i, j][k] < 128:
                    gray = 64
                elif img[i, j][k] < 192:
                    gray = 128
                else:
                    gray = 192
                new_img2[i, j][k] = np.uint8(gray)
    
    #图像量化等级为8的量化处理
    for i in range(height):
        for j in range(width):
            for k in range(3): #对应BGR三分量
                if img[i, j][k] < 32:
                    gray = 0
                elif img[i, j][k] < 64:
                    gray = 32
                elif img[i, j][k] < 96:
                    gray = 64
                elif img[i, j][k] < 128:
                    gray = 96
                elif img[i, j][k] < 160:
                    gray = 128
                elif img[i, j][k] < 192:
                    gray = 160
                elif img[i, j][k] < 224:
                    gray = 192
                else:
                    gray = 224
                new_img3[i, j][k] = np.uint8(gray)
    
    #用来正常显示中文标签
    plt.rcParams['font.sans-serif']=['SimHei']
    
    #显示图像
    titles = ['(a) 原始图像', '(b) 量化-L2', '(c) 量化-L4', '(d) 量化-L8']  
    images = [img, new_img1, new_img2, new_img3]  
    for i in range(4):  
       plt.subplot(2,2,i+1), plt.imshow(images[i], 'gray'), 
       plt.title(titles[i])  
       plt.xticks([]),plt.yticks([])  
    plt.show()
    

    输出结果如图8-4所示,该代码调用matplotlib.pyplot库绘制了四幅图像,其中(a)表示原始图像,(b)表示等级为2的量化处理,(c)表示等级为4的量化处理,(d)表示等级为8的量化处理。

    在这里插入图片描述


    四.K-Means聚类实现量化处理

    除了通过对像素进行统计比较量化处理,还可以根据像素之间的相似性进行聚类处理。这里补充一个基于K-Means聚类算法的量化处理过程,它能够将彩色图像RGB像素点进行颜色分割和颜色量化。此外,该部分只是带领读者简单认识该方法,更多K-Means聚类的知识将在图像分割文章中进行详细叙述[6]。

    # coding: utf-8
    # By:Eastmount
    import cv2
    import numpy as np
    import matplotlib.pyplot as plt
    
    #读取原始图像
    img = cv2.imread('luo.png') 
    
    #图像二维像素转换为一维
    data = img.reshape((-1,3))
    data = np.float32(data)
    
    #定义中心 (type,max_iter,epsilon)
    criteria = (cv2.TERM_CRITERIA_EPS +
                cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0)
    
    #设置标签
    flags = cv2.KMEANS_RANDOM_CENTERS
    
    #K-Means聚类 聚集成4类
    compactness, labels, centers = cv2.kmeans(data, 8, None, criteria, 10, flags)
    
    
    #图像转换回uint8二维类型
    centers = np.uint8(centers)
    res = centers[labels.flatten()]
    dst = res.reshape((img.shape))
    
    #图像转换为RGB显示
    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    dst = cv2.cvtColor(dst, cv2.COLOR_BGR2RGB)
    
    
    #用来正常显示中文标签
    plt.rcParams['font.sans-serif']=['SimHei']
    
    #显示图像
    titles = ['原始图像', '聚类量化 K=8']  
    images = [img, dst]  
    for i in range(2):  
       plt.subplot(1,2,i+1), plt.imshow(images[i], 'gray'), 
       plt.title(titles[i])  
       plt.xticks([]),plt.yticks([])  
    plt.show()
    

    输出结果如图8-5所示。

    在这里插入图片描述

    它通过K-Means聚类算法将彩色人物图像的灰度聚集成八种颜色。核心代码如下:

    • cv2.kmeans(data, 8, None, criteria, 10, flags)

    五.总结

    本文主要讲解了图像的量化处理,从基本概念到操作,再到扩展进行全方位讲解,并且补充了基于K-Means聚类算法的量化处理案例。该部分的知识点能够将生活中的图像转换为数字图像,更好地为后续的图像处理提供帮助。

    最近寒假日更,为了感谢读者。同时感谢在求学路上的同行者,不负遇见,勿忘初心。图像处理系列主要包括三部分,分别是:

    在这里插入图片描述

    在这里插入图片描述

    请添加图片描述

    祝大家新年快乐,虎年大吉,阖家幸福,万事如意,小珞珞给大家拜年了。亲情是真的很美,很治愈。希望小珞珞和他妈妈能开心每一天,全家人身体健康。小珞珞这小样子可爱极了,爱你们喔!

    在这里插入图片描述

    (By:娜璋之家 Eastmount 2022-02-05 夜于贵阳 https://blog.csdn.net/Eastmount )


    参考资料:

    • [1]冈萨雷斯著. 数字图像处理(第3版)[M]. 北京:电子工业出版社,2013.
    • [2]yunfung. 数字图像基础之图像取样和量化(Image Sampling and Quantization)[EB/OL]. (2017-04-23). https://www.cnblogs.com/yunfung/p/6753337.html.
    • [3]阮秋琦. 数字图像处理学(第3版)[M]. 北京:电子工业出版社,2008.
    • [4]Eastmount. [Python图像处理] 三十.图像量化及采样处理万字详细总结[EB/OL]. (2020-11-10). https://blog.csdn.net/Eastmount/article/details/109605161.
    • [5]Eastmount. [数字图像处理] 三.MFC实现图像灰度、采样和量化功能详解[EB/OL]. (2015-05-28). https://blog.csdn.net/eastmount/article/details/46010637.
    • [6]杨秀璋, 颜娜. Python网络数据爬取及分析从入门到精通(分析篇)[M]. 北京:北京航天航空大学出版社, 2018.
    展开全文
  • 欢迎大家来到“Python从零到壹”,在...这篇文章将详细讲解图像算法运算与逻辑运算,包括图像加法、图像减法、图像与运算、图像或运算、图像非运算与图像异或运算。让我们来对比下这些运算在图像中能实现什么样的效果。

    欢迎大家来到“Python从零到壹”,在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界。所有文章都将结合案例、代码和作者的经验讲解,真心想把自己近十年的编程经验分享给大家,希望对您有所帮助,文章中不足之处也请海涵。Python系列整体框架包括基础语法10篇、网络爬虫30篇、可视化分析10篇、机器学习20篇、大数据分析20篇、图像识别30篇、人工智能40篇、Python安全20篇、其他技巧10篇。您的关注、点赞和转发就是对秀璋最大的支持,知识无价人有情,希望我们都能在人生路上开心快乐、共同成长。

    该系列文章主要讲解Python OpenCV图像处理和图像识别知识,前期主要讲解图像处理基础知识、OpenCV基础用法、常用图像绘制方法、图像几何变换等,中期讲解图像处理的各种运算,包括图像点运算、形态学处理、图像锐化、图像增强、图像平滑等,后期研究图像识别、图像分割、图像分类、图像特效处理以及图像处理相关应用。

    上一篇文章介绍了如何使用OpenCV绘制各类几何图形,包括cv2.line()、v2.circle()、cv2.rectangle()、cv2.ellipse()、cv2.polylines()、cv2.putText()函数。这篇文章将详细讲解图像算法运算与逻辑运算,包括图像加法、图像减法、图像与运算、图像或运算、图像非运算与图像异或运算。让我们来对比下这些运算在图像中能实现什么样的效果。希望文章对您有所帮助,如果有不足之处,还请海涵。

    下载地址:

    前文赏析:

    第一部分 基础语法

    第二部分 网络爬虫

    第三部分 数据分析和机器学习

    第四部分 Python图像处理基础

    第五部分 Python图像运算和图像增强

    第六部分 Python图像识别和图像处理经典案例

    第七部分 NLP与文本挖掘

    第八部分 人工智能入门知识

    第九部分 网络攻防与AI安全

    第十部分 知识图谱构建实战

    扩展部分 人工智能高级案例

    作者新开的“娜璋AI安全之家”将专注于Python和安全技术,主要分享Web渗透、系统安全、人工智能、大数据分析、图像识别、恶意代码检测、CVE复现、威胁情报分析等文章。虽然作者是一名技术小白,但会保证每一篇文章都会很用心地撰写,希望这些基础性文章对你有所帮助,在Python和安全路上与大家一起进步。


    一.图像加法运算

    图像加法运算主要有两种方法。第一种是调用Numpy库实现,目标图像像素为两张图像的像素之和;第二种是通过OpenCV调用add()函数实现。第二种方法的函数原型如下:

    • dst = add(src1, src2[, dst[, mask[, dtype]]])
      – src1表示第一张图像的像素矩阵
      – src2表示第二张图像的像素矩阵
      – dst表示输出的图像,必须和输入图像具有相同的大小和通道数
      – mask表示可选操作掩码(8位单通道数组),用于指定要更改的输出数组的元素。
      – dtype表示输出数组的可选深度

    注意,当两幅图像的像素值相加结果小于等于255时,则输出图像直接赋值该结果,如120+48赋值为168;如果相加值大于255,则输出图像的像素结果设置为255,如(255+64) 赋值为255。下面的代码实现了图像加法运算。

    #coding:utf-8
    # By:Eastmount
    import cv2  
    import numpy as np  
     
    #读取图片
    img = cv2.imread("luo.png")
    
    #图像各像素加100
    m = np.ones(img.shape, dtype="uint8")*100
    
    #OpenCV加法运算
    result = cv2.add(img, m)
    
    #显示图像
    cv2.imshow("original", img)
    cv2.imshow("result", result)
    
    #等待显示
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    输出如图4-1所示,左边为“小珞珞”的原始图像,右边为像素值增加100像素后的图像,输出图像显示更偏白。

    在这里插入图片描述


    二.图像减法运算

    图像减法运算主要调用subtract()函数实现,其原型如下所示:

    • dst = subtract(src1, src2[, dst[, mask[, dtype]]])
      – src1表示第一张图像的像素矩阵
      – src2表示第二张图像的像素矩阵
      – dst表示输出的图像,必须和输入图像具有相同的大小和通道数
      – mask表示可选操作掩码(8位单通道数组),用于指定要更改的输出数组的元素。
      – dtype表示输出数组的可选深度

    具体实现代码如下所示:

    #coding:utf-8
    # By:Eastmount
    import cv2  
    import numpy as np  
     
    #读取图片 
    img = cv2.imread("luo.png")
    
    #图像各像素减50
    m = np.ones(img.shape, dtype="uint8")*50
    
    #OpenCV减法运算
    result = cv2.subtract(img, m)
    
    #显示图像
    cv2.imshow("original", img)
    cv2.imshow("result", result)
    
    #等待显示
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    输出如图4-2所示,左边为原始图像,右边为像素值减少50像素后的图像,输出图像显示更偏暗。

    在这里插入图片描述


    三.图像与运算

    与运算是计算机中一种基本的逻辑运算方式,符号表示为“&”,其运算规则为:

    • 0&0=0
    • 0&1=0
    • 1&0=0
    • 1&1=1

    图像的与运算是指两张图像(灰度图像或彩色图像均可)的每个像素值进行二进制“与”操作,实现图像裁剪。

    • dst = bitwise_and(src1, src2[, dst[, mask]])
      – src1表示第一张图像的像素矩阵
      – src2表示第二张图像的像素矩阵
      – dst表示输出的图像,必须和输入图像具有相同的大小和通道数
      – mask表示可选操作掩码(8位单通道数组),用于指定要更改的输出数组的元素。

    下面代码是通过图像与运算实现图像剪裁的功能。

    #coding:utf-8
    # By:Eastmount
    import cv2  
    import numpy as np  
     
    #读取图片 
    img = cv2.imread("luo.png", cv2.IMREAD_GRAYSCALE)
    
    #获取图像宽和高
    rows, cols = img.shape[:2]
    print(rows, cols)
    
    #画圆形
    circle = np.zeros((rows, cols), dtype="uint8")
    cv2.circle(circle, (int(rows/2),int(cols/2)), 100, 255, -1)
    print(circle.shape)
    print(img.size, circle.size)
    
    #OpenCV图像与运算
    result = cv2.bitwise_and(img, circle)
    
    #显示图像
    cv2.imshow("original", img)
    cv2.imshow("circle", circle)
    cv2.imshow("result", result)
    
    #等待显示
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    输出如图4-3所示,原始图像与圆形进行与运算之后,提取了其中心轮廓。同时输出图像的形状为377×326。注意,两张图像的大小和类型必须一致。

    在这里插入图片描述


    四.图像或运算

    逻辑或运算是指如果一个操作数或多个操作数为 true,则逻辑或运算符返回布尔值 true;只有全部操作数为false,结果才是 false。图像的或运算是指两张图像(灰度图像或彩色图像均可)的每个像素值进行二进制“或”操作,实现图像裁剪。其函数原型如下所示:

    • dst = bitwise_or(src1, src2[, dst[, mask]])
      – src1表示第一张图像的像素矩阵
      – src2表示第二张图像的像素矩阵
      – dst表示输出的图像,必须和输入图像具有相同的大小和通道数
      – mask表示可选操作掩码(8位单通道数组),用于指定要更改的输出数组的元素。

    下面代码是通过图像或运算实现图像剪裁的功能。

    #coding:utf-8
    # By:Eastmount
    import cv2  
    import numpy as np  
     
    #读取图片 
    img = cv2.imread("luo.png", cv2.IMREAD_GRAYSCALE)
    
    #获取图像宽和高
    rows, cols = img.shape[:2]
    
    #画圆形
    circle = np.zeros((rows, cols), dtype="uint8")
    cv2.circle(circle, (int(rows/2),int(cols/2)), 100, 255, -1)
    
    #OpenCV图像或运算
    result = cv2.bitwise_or(img, circle)
    
    #显示图像
    cv2.imshow("original", img)
    cv2.imshow("circle", circle)
    cv2.imshow("result", result)
    
    #等待显示
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    输出如图4-4所示,原始图像与圆形进行或运算之后,提取了图像除中心原形之外的像素值。

    在这里插入图片描述


    五.图像非运算

    图像非运算就是图像的像素反色处理,它将原始图像的黑色像素点转换为白色像素点,白色像素点则转换为黑色像素点,其函数原型如下:

    • dst = bitwise_not(src1, src2[, dst[, mask]])
      – src1表示第一张图像的像素矩阵
      – src2表示第二张图像的像素矩阵
      – dst表示输出的图像,必须和输入图像具有相同的大小和通道数
      – mask表示可选操作掩码(8位单通道数组),用于指定要更改的输出数组的元素。

    图像非运算的实现代码如下所示。

    #coding:utf-8
    import cv2  
    import numpy as np  
     
    #读取图片 
    img = cv2.imread("Lena.png", cv2.IMREAD_GRAYSCALE)
    
    #OpenCV图像非运算
    result = cv2.bitwise_not(img)
    
    #显示图像
    cv2.imshow("original", img)
    cv2.imshow("result", result)
    
    #等待显示
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    原始图像非运算之后输出如图4-5所示。

    在这里插入图片描述


    六.图像异或运算

    逻辑异或运算(xor)是一个数学运算符,数学符号为“⊕”,计算机符号为“xor”,其运算法则为:如果a、b两个值不相同,则异或结果为1;如果a、b两个值相同,异或结果为0。

    图像的异或运算是指两张图像(灰度图像或彩色图像均可)的每个像素值进行二进制“异或”操作,实现图像裁剪。其函数原型如下所示:

    • dst = bitwise_xor(src1, src2[, dst[, mask]])
      – src1表示第一张图像的像素矩阵
      – src2表示第二张图像的像素矩阵
      – dst表示输出的图像,必须和输入图像具有相同的大小和通道数
      – mask表示可选操作掩码(8位单通道数组),用于指定要更改的输出数组的元素。

    图像异或运算的实现代码如下所示。

    #coding:utf-8
    # By:Eastmount
    import cv2  
    import numpy as np  
     
    #读取图片 
    img = cv2.imread("luo.png", cv2.IMREAD_GRAYSCALE)
    
    #获取图像宽和高
    rows, cols = img.shape[:2]
    
    #画圆形
    circle = np.zeros((rows, cols), dtype="uint8")
    cv2.circle(circle, (int(rows/2),int(cols/2)), 100, 255, -1)
    
    #OpenCV图像异或运算
    result = cv2.bitwise_xor(img, circle)
    
    #显示图像
    cv2.imshow("original", img)
    cv2.imshow("circle", circle)
    cv2.imshow("result", result)
    
    #等待显示
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    原始图像与圆形进行异或运算之后输出如图4-6所示。

    在这里插入图片描述


    七.总结

    本文详细介绍了图像处理的算术运算与逻辑运算,包括图像加法、图像减法、图像与运算、图像或运算、图像非运算与图像异或运算,并以“小珞珞”图像为案例进行讲解,希望对您有所帮助。

    感谢在求学路上的同行者,不负遇见,勿忘初心。图像处理系列主要包括三部分,分别是:

    在这里插入图片描述

    在这里插入图片描述

    请添加图片描述

    这周的留言感慨~

    十二年CSDN的博客分享,如果要说分享最让我开心的是什么?不是传道,不是授业,也不是解惑,而是接下来这类事。这些年已经陆续鼓励了一些朋友当老师,而昨天得知这一位博友真的去到新疆南疆成为了一名小学老师,我很是感动,是真的感动,六年前我曾鼓励他如果想,就放弃高额工资的互联网大厂,去做自己想做的,没想到已经当了四年老师。又当爹又当妈,国语普及,文化教育,这里面的艰辛不是一两句道得清,除了佩服就是鼓励。
    正如你说的一样,“一辈子总得做点有意义的事情,生命实在太短暂,一定要活得积极、正面”。或许,这也是我在CSDN分享博客的最大意义,再比如云南那位老友的留言,“农村的孩子下雨没有伞,只能拼命奔跑”,希望你以后也能成为一名教师,感恩有你们,感谢有你们。我也希望自己早日毕业回到家乡,花上三四十年做好两件事,一是认真教书,二是将少数民族文物抢救和文字语音保护做好,也鼓励更多人一起加入进来。自己虽然很菜吧,但还是有一些喜欢的事,尤其陪伴爱的人,挺好,爱你们喔。2022年继续加油,在CSDN分享更高质量的博客和专栏。

    在这里插入图片描述

    (By:娜璋之家 Eastmount 2022-01-25 夜于贵阳 https://blog.csdn.net/Eastmount )


    展开全文
  • 第二部分将讲解图像运算和图像增强,上一篇文章是图像点运算的灰度化处理知识,包括各种灰度算法的实现,以及灰度线性变换和灰度非线性变换。这篇文章将详细讲解图像灰度线性变换,包括灰度上移、对比度增强、对比度...

    欢迎大家来到“Python从零到壹”,在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界。所有文章都将结合案例、代码和作者的经验讲解,真心想把自己近十年的编程经验分享给大家,希望对您有所帮助,文章中不足之处也请海涵。Python系列整体框架包括基础语法10篇、网络爬虫30篇、可视化分析10篇、机器学习20篇、大数据分析20篇、图像识别30篇、人工智能40篇、Python安全20篇、其他技巧10篇。您的关注、点赞和转发就是对秀璋最大的支持,知识无价人有情,希望我们都能在人生路上开心快乐、共同成长。

    该系列文章主要讲解Python OpenCV图像处理和图像识别知识,前期主要讲解图像处理基础知识、OpenCV基础用法、常用图像绘制方法、图像几何变换等,中期讲解图像处理的各种运算,包括图像点运算、形态学处理、图像锐化、图像增强、图像平滑等,后期研究图像识别、图像分割、图像分类、图像特效处理以及图像处理相关应用。

    第二部分将讲解图像运算和图像增强,上一篇文章是图像点运算的灰度化处理知识,包括各种灰度算法的实现,以及灰度线性变换和灰度非线性变换。这篇文章将详细讲解图像灰度线性变换,包括灰度上移、对比度增强、对比度减弱和灰度反色变换。希望文章对您有所帮助,如果有不足之处,还请海涵。

    下载地址:

    前文赏析:

    第一部分 基础语法

    第二部分 网络爬虫

    第三部分 数据分析和机器学习

    第四部分 Python图像处理基础

    第五部分 Python图像运算和图像增强

    第六部分 Python图像识别和图像高阶案例

    第七部分 NLP与文本挖掘

    第八部分 人工智能入门知识

    第九部分 网络攻防与AI安全

    第十部分 知识图谱构建实战

    扩展部分 人工智能高级案例

    作者新开的“娜璋AI安全之家”将专注于Python和安全技术,主要分享Web渗透、系统安全、人工智能、大数据分析、图像识别、恶意代码检测、CVE复现、威胁情报分析等文章。虽然作者是一名技术小白,但会保证每一篇文章都会很用心地撰写,希望这些基础性文章对你有所帮助,在Python和安全路上与大家一起进步。


    一.灰度线性变换

    图像的灰度线性变换是通过建立灰度映射来调整原始图像的灰度,从而改善图像的质量,凸显图像的细节,提高图像的对比度。灰度线性变换的计算公式如(12-1)所示:

    在这里插入图片描述

    该公式中DB表示灰度线性变换后的灰度值,DA表示变换前输入图像的灰度值,α和b为线性变换方程f(D)的参数,分别表示斜率和截距[1-4]。

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

    如图12-1所示,显示了图像的灰度线性变换对应的效果图。

    在这里插入图片描述


    二.图像灰度上移变换

    该算法将实现图像灰度值的上移,从而提升图像的亮度。

    • DB=DA+50

    具体实现代码如下所示。由于图像的灰度值位于0至255区间之内,所以需要对灰度值进行溢出判断。

    # -*- coding: utf-8 -*-
    # By:Eastmount
    import cv2  
    import numpy as np  
    import matplotlib.pyplot as plt
    
    #读取原始图像
    img = cv2.imread('luo.png')
    
    #图像灰度转换
    grayImage = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    
    #获取图像高度和宽度
    height = grayImage.shape[0]
    width = grayImage.shape[1]
    
    #创建一幅图像
    result = np.zeros((height, width), np.uint8)
    
    #图像灰度上移变换 DB=DA+50
    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)
    
    #显示图像
    cv2.imshow("Gray Image", grayImage)
    cv2.imshow("Result", result)
    
    #等待显示
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    其输出结果如图12-2所示,图像的所有灰度值上移50,图像变得更白了。注意,纯黑色对应的灰度值为0,纯白色对应的灰度值为255。

    在这里插入图片描述


    三.图像对比度增强变换

    该算法将增强图像的对比度,Python实现代码如下所示。

    • DB=DA×1.5
    # -*- coding: utf-8 -*-
    # By:Eastmount
    import cv2  
    import numpy as np  
    import matplotlib.pyplot as plt
    
    #读取原始图像
    img = cv2.imread('luo.png')
    
    #图像灰度转换
    grayImage = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    
    #获取图像高度和宽度
    height = grayImage.shape[0]
    width = grayImage.shape[1]
    
    #创建一幅图像
    result = np.zeros((height, width), np.uint8)
    
    #图像对比度增强变换 DB=DA×1.5
    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)
    
    #显示图像
    cv2.imshow("Gray Image", grayImage)
    cv2.imshow("Result", result)
    

    其输出结果如图12-3所示,图像的所有灰度值增强1.5倍。

    在这里插入图片描述


    四.图像对比度减弱变换

    该算法将减弱图像的对比度,Python实现代码如下所示。

    • DB=DA×0.8
    # -*- coding: utf-8 -*-
    # By:Eastmount
    import cv2  
    import numpy as np  
    import matplotlib.pyplot as plt
    
    #读取原始图像
    img = cv2.imread('luo.png')
    
    #图像灰度转换
    grayImage = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    
    #获取图像高度和宽度
    height = grayImage.shape[0]
    width = grayImage.shape[1]
    
    #创建一幅图像
    result = np.zeros((height, width), np.uint8)
    
    #图像对比度减弱变换 DB=DA×0.8
    for i in range(height):
        for j in range(width):
            gray = int(grayImage[i,j]*0.8)
            result[i,j] = np.uint8(gray)
    
    #显示图像
    cv2.imshow("Gray Image", grayImage)
    cv2.imshow("Result", result)
    
    #等待显示
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    其输出结果如图12-4所示,图像的所有灰度值减弱,图像变得更暗。

    在这里插入图片描述


    五.图像灰度反色变换

    反色变换又称为线性灰度求补变换,它是对原图像的像素值进行反转,即黑色变为白色,白色变为黑色的过程。

    • DB=255-DA

    其Python实现代码如下所示:

    # -*- coding: utf-8 -*-
    # By:Eastmount
    import cv2  
    import numpy as np  
    import matplotlib.pyplot as plt
    
    #读取原始图像
    img = cv2.imread('luo.png')
    
    #图像灰度转换
    grayImage = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    
    #获取图像高度和宽度
    height = grayImage.shape[0]
    width = grayImage.shape[1]
    
    #创建一幅图像
    result = np.zeros((height, width), np.uint8)
    
    #图像灰度反色变换 DB=255-DA
    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()
    

    其输出结果如图12-5所示,图像处理前后的灰度值是互补的。

    在这里插入图片描述

    图像灰度反色变换在医学图像处理中有一定的应用,如图12-6所示:

    在这里插入图片描述

    六.总结

    本文主要讲解图像灰度线性变换,包括图像灰度上移、图像对比度增强变换、图像对比度减弱变换和图像灰度反色变换。希望大家一定要自己实现文章中的代码,更好地提升编程能力。

    感谢在求学路上的同行者,不负遇见,勿忘初心。图像处理系列主要包括三部分,分别是:

    在这里插入图片描述

    在这里插入图片描述

    请添加图片描述

    祝大家新年快乐,虎年大吉,阖家幸福,万事如意,小珞珞给大家拜年了。亲情是真的很美,很治愈。希望小珞珞和他妈妈能开心每一天,全家人身体健康。小珞珞这小样子可爱极了,爱你们喔!

    在这里插入图片描述

    (By:娜璋之家 Eastmount 2022-02-28 夜于武汉 https://blog.csdn.net/Eastmount )


    参考文献:

    • [1] 阮秋琦. 数字图像处理学(第3版)[M]. 北京:电子工业出版社,2008.
    • [2] 毛星云,冷雪飞. OpenCV3编程入门[M]. 北京:电子工业出版社,2015.
    • [3] Eastmount. [数字图像处理] 三.MFC实现图像灰度、采样和量化功能详解[EB/OL]. (2015-05-28). https://blog.csdn.net/eastmount/article/details/46010637.
    • [4] Eastmount. [Python图像处理] 十五.图像的灰度线性变换[EB/OL]. ( 2019-03-28). https://blog.csdn.net/Eastmount/article/details/88858696.
    展开全文
  • 这是帖子“基于SIFT特征的图像配准(附Matlab源代码)”中实验二和实验三所使用到的图片
  • 数字图像处理(2)——数字图像获取

    千次阅读 2022-03-19 11:12:16
    文章目录2.1图像数字化2.1.1数字图像的表示2.1.1.1黑白图像2.1.1.2灰度图像2.1.1.3彩色图像2.1.2图像数字化过程2.1.2.1采样2.1.2.2量化2.1.2.3采样、量化参数与数字化图像间的关系2.1.2.4图像数字化设备2.2图像灰度...
  • 欢迎大家来到“Python从零到壹”,在这里我将分享约200篇Python系列文章,带大家一起去学习...这篇文章将详细讲解图像几何变换,包括图像平移、图像缩放和图像旋转。希望文章对您有所帮助,如果有不足之处,还请海涵。
  • 该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门、OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子、图像增强技术、图像分割等,后期结合深度学习研究图像识别、图像分类应用。...
  • 欢迎大家来到“Python从...上一篇文章介绍图像几何变换,包括图像平移、图像缩放和图像旋转。这篇文章将继续讲解图像几何变换,包括图像镜像、图像仿射和图像透视。希望文章对您有所帮助,如果有不足之处,还请海涵。
  • 欢迎大家来到“Python从零到壹”,在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍。...这篇文章将详细讲解图像金字塔,包括图像向上取样和向下取样。希望文章对您有所帮助,如果有不足之处,还请海涵。
  • 第0章 数字图像处理概述 0.1 数字图像 0.1.1 什么是数字图像 0.1.2 数字图像的显示 0.1.3 数字图像的分类 0.1.4 数字图像的实质 0.1.5 数字图像的表示 0.1.6 图像的空间和灰度级分辨率 0.2 数字图像处理与识别 0.2.1...
  • 数字图像处理(二)—— 图像数字化特征的介绍
  • 本节介绍了图像处理中图像与波的关系,由于图像灰度值或通道值在各位置的值联合起来看象波,同时数字图像的成像的辐射源也是各种波,因此图像处理和波关系密切,滤波处理其实就是对图像的各像素的灰度值或通道值幅度...
  • 图像处理,图像加法(例图像的叠加,调亮色等),图像减法(例捕捉运动图像的轨迹)
  • (1)了解和掌握图像处理工具 Matlab,熟悉基于 Matlab 的图像处理函数,并为下一步 编程进行图像处理打下基础。 ( 2)理解色彩的概念,掌握图像代数运算,几何变换方法。 二、实验内容 打开一幅彩色图像 ...
  • 图像处理(1) : 图像增强

    万次阅读 多人点赞 2021-03-04 14:48:22
    图像增强就是指通过某种图像处理方法对退化的某些图像特征,如边缘、轮廓、对比度等进行处理,以改善图像的视觉效果,提高图像的清晰度,或是突出图像中的某些“有用”,压缩其他“无用”信息,将图像转换为更适合...
  • 全景图像拼接——图像融合

    千次阅读 2022-01-05 21:22:55
    对全景图像拼接中的图像融合技术进行了介绍
  • 2.掌握读、写图像的基本方法; 3.掌握python语言中图像数据与信息的读取方法; 4.掌握图像基本属性的操作方法; 5.掌握图像的简单运算方法; 二、实验内容 1.使用Anaconda搭建课程实验环境。 2.实现图像模拟采样的...
  • 智能车浅谈——图像

    万次阅读 多人点赞 2022-01-27 10:49:13
    智能车浅谈 ——图像处理篇,解析总钻风和神眼这类灰度摄像头的使用原理,结合OPENCV来梳理整个图像获取、二值化、压缩、巡线原理。
  • Matlab图像处理函数大全(建议收藏)

    千次阅读 多人点赞 2020-12-11 20:32:01
    文章目录第1章: 图像显示与图像文件输入输出函数第2章: 图形绘制第3章: 图像类型和类型转换第4章: 图形用户界面工具第5章: 空间变换和图像配准第6章: 图像分析和统计第7章: 图像代数运算第8章: 图像增强第9...
  • 图像去雾概述

    千次阅读 2021-11-23 11:03:00
    其中在雾天拍摄的图像容易受雾或霾的影响,导致图片细节模糊、对比度低以至于丢失图像重要信息,为解决此类问题图像去雾算法应运而生。图像去雾算法是以满足特定场景需求、突出图片细节并增强图片质量为目的的一种...
  • ⑤在数字图像处理领域,将图像分为模拟图像和数字图像两种,计算机处理的信号都是数字信号,所以在计算机上处理的图像均为数字图像。 ⑥根据数字图像在计算机中表示方法的不同,分为二进制图像、索引图像、灰度图像...
  • 图像处理入门:如何处理不同类型的图像

    千次阅读 多人点赞 2021-01-15 18:20:26
    本节将讨论不同的图像处理函数(使用点变换和几何变换),以及如何处理不同类型的图像。 1.5.1 处理不同的文件格式和图像类型 图像可以以不同的文件格式和不同的模式(类型)保存。接下来我们将讨论如何使用...
  • 《数字图像处理》笔记

    千次阅读 2021-11-29 00:44:45
    参考文献——《图像处理和分析教程》 by 章毓晋 毓(yu)、晋(jin) 第1章 绪论 1.1 图像概述 1.1.1 基本概念和术语 1、图像图像是各种观测系统以不同形式和手段观测客观世界而获得的,可以直接或间接作用...
  • 《数字图像处理的MATLAB实现(第2版)》是第一本介绍图像处理的基础理论以及图像处理实现中所使用软件原理的书籍,汇集了Digital Image Processing 一书的基本概念和MathWorks公司的图像处理工具箱(MathWorks公司在...
  • 图像超分辨率重建概述

    千次阅读 2021-11-16 19:53:30
    图像分辨率是一组用于评估图像中蕴含细节信息丰富程度的性能参数,包括时间分辨率、空间分辨率及色阶分辨率等,体现了成像系统实际所能反映物体细节信息的能力。相较于低分辨率图像,高分辨率图像通常包含更大的...
  • 目录 1 图像缩放-resize() 2 图像旋转-getRotationMatrix2D(), ...图像几何变换有图像缩放、图像旋转、图像翻转和图像平移等。 1 图像缩放-resize() 图像缩放主要调用 resize() 函数实现,具体如下: resul...
  • 《数字图像处理》冈萨雷斯 第三版part1(共1-3部分)

    千次下载 热门讨论 2014-11-12 13:50:07
    本书在介绍MATLAB编程基础知识之后,讲述了图像处理的主要内容,具体包括亮度变换、线性和非线性空间滤波、频率域滤波、图像复原与配准、彩色图像处理、小波、图像数据压缩、形态学图像处理、图像分割、区域和边界...
  • 数字图像处理期末复习题

    千次阅读 2021-06-30 14:06:05
    2.数字图像处理可以理解为两个方面的操作:一是从图像图像的处理,如图像增强等; 二是 ,如图像测量等。 3.数字图像处理可以理解为两个方面的操作:一是 ,如图像增强等; 二是从图像到非图像的一种表示,如图像...
  • 该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门、OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子、图像增强技术、图像分割等,后期结合深度学习研究图像识别、图像分类应用。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,071,909
精华内容 828,763
关键字:

图像

友情链接: ov5647_mipi.zip