• 图像的表示方法


    1 二值图像

      二值图像是指仅仅包含黑色和白色两种颜色的图像,在计算机中,通过一个数据集矩阵来表示和处理图像,每个矩阵点就是一个像素,像素是构成图像的基本单元,任何像素点的灰度值均为0或者255,分别代表黑色(0)和白色(255)。

    2 灰度图像

      比二值图像表现出更丰富的细节信息,灰度图像在黑色与白色之间还有许多级的颜色深度,计算机会将灰度处理为256个灰度等级,用数值区间[0, 255]来表示,其中,255表示纯白色,0表示纯黑色,正好用一个字节的大小来表示。

    3 彩色图像

      神经生理学角度:视网膜上有三种不同的颜色感受器,能感受三种不同的颜色:红绿蓝,即三基色,自然界中常见的各种色光都可以通过将三基色按一定比例混合构成。
      光学角度:颜色可解析为主波长、纯度、明度等。
      心理学和视觉角度:颜色可解析为色调、饱和度、亮度等。

    上述不同的方式表述颜色的模式称为色彩空间,或颜色空间、颜色模式等,最常见的就是RGB色彩空间,其他的比如HSV、HLS等。

      在RGB色彩空间里,存在R、G、B三个通道,每个色彩通道值的范围都在[0, 255]之间,我们用这三个色彩通道组合表示颜色。对于彩色图像,每个通道都可以理解为一个独立的灰度图像,通常用三维数组表示。如下所示:

    [[[ 37  56  89]
      [ 39  58  91]
      [ 39  58  91]
      ...
      [183 201 230]
      [180 198 227]
      [174 192 221]]
    
     [[ 24  43  76]
      [ 24  43  76]
      [ 23  42  75]
      ...
      [ 97 115 144]
      [ 98 116 145]
      [ 96 114 143]]
    
     [[ 40  60  95]
      [ 39  59  94]
      [ 38  58  93]
      ...
      [ 49  69 100]
      [ 50  70 101]
      [ 50  70 101]]
    
     ...
    
     [[  1   1   1]
      [  1   1   1]
      [  1   1   1]
      ...
      [  1   1   1]
      [  1   1   1]
      [  1   1   1]]
    
     [[  0   0   0]
      [  0   0   0]
      [  0   0   0]
      ...
      [  0   0   0]
      [  0   0   0]
      [  0   0   0]]
    
     [[  0   0   0]
      [  0   0   0]
      [  0   0   0]
      ...
      [  0   0   0]
      [  0   0   0]
      [  0   0   0]]]
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50

      一张完整的图像可以分解为三基色的单色图,如下图所示,分别为原图、b通道图、g通道图、r通道图,注意:opencv中,通道顺序为B->G->R

    import cv2
    import numpy as np
    
    def resetRGB(path, t):
    	img = cv2.imread(path, cv2.IMREAD_UNCHANGED)
    
    	if len(t) == 0:
    		return img
    
    	h, w, l = img.shape #图像的高、宽、通道数
    	
    	for row in range(h):
    		for col in range(w):
    			b, g, r = img[row, col]
    			if t == "b":
    				img[row, col] = (b, 0, 0)
    			elif t == "g":
    				img[row, col] = (0, g, 0)
    			else:
    				img[row, col] = (0, 0, r)
    	
    	return img
    
    path = r"C:\Users\Administrator\Desktop\\1.jpg"
    
    ori = resetRGB(path, "")
    imgb = resetRGB(path, "b")
    imgg = resetRGB(path, "g")
    imgr = resetRGB(path, "r")
    inputs = np.hstack((ori, imgb, imgg, imgr))
    
    cv2.namedWindow('myPicture', 0)
    cv2.imshow('myPicture',inputs)
    cv2.waitKey(2000)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
  • 相关阅读:
    HTTP的请求方法,空行,body,介绍请求报头的内部以及粘包问题
    基于SpringBoot的在线学生请假管理系统的设计与实现毕业设计源码060935
    laravel 凌晨0点 导出数据库
    <Linux>进程控制
    LeetCode 20.有效的括号
    rsync详解
    C# OpenCvSharp DNN Image Retouching
    【公式输入】 latex和markdown支持的公式写法整理
    1106 2019数列分数 15
    ADC测试杂谈一:配置基于matlab+quartus的测试环境
  • 原文地址:https://blog.csdn.net/cjqh_hao/article/details/126914600