Python数字图像处理的算法_rgb

一、什么是图像处理?

图像处理(image processing),用计算机对图像进行分析,以达到所需结果的技术。又称影像处理。图像处理一般指数字图像处理。数字图像是指用工业相机、摄像机、扫描仪等设备经过拍摄得到的一个大的二维数组,该数组的元素称为像素,其值称为灰度值。图像处理技术一般包括图像压缩,增强和复原,匹配、描述和识别3个部分。

二、常见的色彩空间介绍:
RGB:

RGB (Red 红色,Green 绿色,Blue 蓝色),是根据人眼识别的颜色而定义的空间,可用于表示大部分颜色,也是图像处理中最基本、最常用、面向硬件的颜色空间,是一种光混合的体系.

Python数字图像处理的算法_opencv_02


RGB 颜色模式用三维空间中的一个点表示一种颜色,每个点有三个分量,分别表示红、绿、蓝的亮度值

在RGB模型的立方体中,

[1] - 原点对应的颜色为黑色,它的三个分量值都为0;

[2] - 距离原点最远的顶点对应的颜色为白色,三个分量值都为1.

[3] - 从黑色到白色的灰度值分布在这两个点的连线上,该虚线称为灰度线.

[4] - 立方体的其余各点对应不同的颜色,即三原色红、绿、蓝及其混合色黄、品红、青色.

Python数字图像处理的算法_Python数字图像处理的算法_03

HSI:

HSI 颜色空间可以用一个圆锥空间模型来描述,能清晰表现色调(Hue)、饱和度(Saturation, Chroma)和亮度(Intensity, Brightness)的变化情形.

色相 H(Hue) - 表示颜色的相位角. 红、绿、蓝分别相隔 120 度;互补色分别相差 180 度,即颜色的类别.

饱和度 S(Saturation) - 色彩的强度或纯度. 表示成所选颜色的纯度和该颜色最大的纯度之间的比率,范围:[0, 1],即颜色的深浅程度.

亮度 I(Intensity) - 表示颜色的明亮程度,通常以 0% (黑色) 到 100% (白色) 的百分比来衡量(人眼对亮度很敏感).

Python数字图像处理的算法_htc_04


Python数字图像处理的算法_opencv_05


Python数字图像处理的算法_opencv_06


Python数字图像处理的算法_opencv_07


Python数字图像处理的算法_计算机视觉_08

三、 OpenCV基础图像处理

1、图像颜色空间转换
cv2.cvtColor(src,code,dst=None,dstCn=None)

  • src:颜色空间转换的图像
  • code:图像转换方式

模式

作用

cv2.COLOR_BGR2GRAY

BGR 转 灰度

cv2.COLOR_BGR2HSV

BGR 转 HSV

cv2.COLOR_HSV2BGR

HSV 转 BGR

cv2.COLOR_BGR2RGB

BGR 转 RGB

cv2.COLOR_RGB2BGR

RGB 转 BGR

import cv2
imgBGR = cv2.imread("first.jpg",cv2.IMREAD_COLOR)
imgGRAY = cv2.cvtColor(imgBGR,cv2.COLOR_BGR2GRAY)
imgHSV = cv2.cvtColor(imgBGR,cv2.COLOR_BGR2HSV)
imgRGB = cv2.cvtColor(imgBGR,cv2.COLOR_BGR2RGB)
cv2.imshow("GRAY",imgGRAY)
cv2.imshow("BGR",imgBGR)
cv2.imshow("RGB",imgRGB)
cv2.imshow("HSV",imgHSV)
cv2.waitKey()
cv2.destroyAllWindows()

Python数字图像处理的算法_htc_09


2、图像的二值化:

阈值:

阈的意思是界限,故阈值又叫临界值,是指一个效应能够产生的最低值或最高值

简单来说 就是高于阈值取 最高值 低于阈值取 最低值(或者特殊值)

thresh , dst=threshold(src, thresh, maxval, type, dst=None)

  • src:待处理的图像
  • thresh:阈值
  • maxval:高于阈值所变为的最高值
  • type:划分的时候使用的是什么类型的算法,常用值为0(cv2.THRESH_BINARY)

Python数字图像处理的算法_rgb_10


接受值:

  • thresh : 阈值
  • dst : 二值化后的图像
import cv2
img = cv2.imread("first.jpg",cv2.IMREAD_UNCHANGED)
retavel , dst = cv2.threshold(img,100,255,cv2.THRESH_BINARY)
print("阈值",retavel)
cv2.imshow("threshold",dst)
cv2.waitKey()
cv2.destroyAllWindows()

Python数字图像处理的算法_Python数字图像处理的算法_11


练习题3:

对一个图像颜色空间转换为GRAY,同时将图像进行二值化,显示2副图像,按s键保存。