博主简介

博主是一名大二学生,主攻人工智能研究。感谢让我们在CSDN相遇,博主致力于在这里分享关于人工智能,c++,Python,爬虫等方面知识的分享。 如果有需要的小伙伴可以关注博主,博主会继续更新的,如果有错误之处,大家可以指正。

专栏简介:   本专栏主要研究计算机视觉,涉及算法,案例实践,网络模型等知识。包括一些常用的数据处理算法,也会介绍很多的Python第三方库。如果需要,点击这里  订阅专栏 。

给大家分享一个我很喜欢的一句话:“每天多努力一点,不为别的,只为日后,能够多一些选择,选择舒心的日子,选择自己喜欢的人!”


目录

颜色特征

RGB颜色特征

HIS颜色空间

HSV颜色空间

颜色直方图

OpenCV图像色调、对比度变化


在深度学习广泛应用之前,也就是我们所说的传统图像处理,人们是如何处理图像的呢?首先找出图片中的关键特征,然后对这些特征进行识别,检测,分割等。在对计算机进行处理时,也需要先寻找特征。在让计算机理解图像之前,我们先来熟悉熟悉图像特征。

颜色特征

对于颜色特征,我们在描述它之前,我们首先要选择合适的颜色空间来描述颜色特征,颜色空间包括灰度图,RGB、HIS、HSL、HSV、HSB、YCrCB、CIE、XYZ、CIE、Lab等;其次,我们要采用一定的零花方法将颜色特征表达为向量的形式;最后,还要定义相似度。

RGB颜色特征

色彩三原色应该都听过,及品红,黄,青(不是蓝色),这是我们在平时所使用的,但是对于计算机来说,他们呢的显示屏使用的则是:红、绿、蓝。他们对应的波长为700nm,546

.1nm,435.8nm。这三种颜色可以根据不同的比例组成不同的颜色,而他们混合后就是白色。

RGB模式是如何定义的喃?根据不同的亮度值,将每种颜色分为0~255,所有颜色可以用三种颜色混合得到。那么一共有(256x256x256=16777216种。例如纯黑色(0,0,0)和纯白色(255,255,255)。

import cv2
img=cv2.imread('F:\Image\\test1.jpg',cv2.IMREAD_COLOR)
print(img)

[[[180 204 220] [176 200 219] [171 192 216] ... [144 169 217] [142 168 219] [145 173 223]] [[171 195 211] [167 190 209] [161 183 207] ... [133 157 206] [131 157 207] [133 162 212]] [[165 189 205] [161 184 203] [155 177 201] ... [124 149 197] [122 149 199] [125 154 204]] ...

...

... [ 35 60 113] [ 51 77 130] [ 65 91 144]]]

看上面图片的矩阵输出,你们会发现,它的值都是在0~255之间,这就是因为他们都是色彩三原色构成,组成一个三维矩阵。所以我们如果要对图片操作,就只需要对三维矩阵操作就可以了。博主有一篇文章就是介绍这个的,比如打马赛克,当然,后面的学习会更精彩。言归正传,除了RGB色彩,我们还需要认识其他的颜色空间。

HIS颜色空间

HIS模式是从人的视觉系统出发,用色调,饱和度和亮度来描述色彩。因为该颜色空间非常的逼近人的视觉系统,因此,用HIS来处理图像非常的逼真,当然,除此之外,还有一个原因是现在的很多图像处理算法都是关于HIS的,所以,使用HIS更加方便我们操作。

HIS颜色空间,H指色调或色相,表示光线的波长,取值范围为0~360度;S指饱和度,表示色彩的纯度,取值范围为0~100%(饱和);I指亮度,表示敏感程度,取值范围为0~100%。 如果想实现颜色空间转化,那么我们只需要用到cv2.cvtColor(img,cv2.COLOR_BGR2RGB).第二个参数为转换方式:

函数转换解释文档

点击这个解释文档,就可以得到转换方式。太多了,博主就不一一介绍了,基本上就是COLOR_BGR2**,后面的就是要转换的格式,如RGB,HIS,YCrCb等,当然,opencv2版本则不一样,官网会有介绍。

import cv2
img=cv2.imread('F:\Image\\test1.jpg',cv2.IMREAD_COLOR)
cv2.imshow('1',img)
#转换为rgb颜色空间
rgb=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
cv2.imshow('2',rgb)
#转换为hls颜色空间
his=cv2.cvtColor(img,cv2.COLOR_BGR2HLS)
cv2.imshow('3',his)
#转换为灰度图像
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
cv2.imshow('4',gray)
cv2.waitKey(0)

 上面的图片展示了不同的颜色空间下的图片,我们可以发现,不同的颜色空间对应的图片也是不同的,所以如果要使用图片,就要根据当时的情况来进行选择。

HSV颜色空间

HSV颜色空间的模型和HIS相似,依据色泽,明暗和色调来定义颜色,其中H代表色度,S代表饱和度,V代表亮度,要注意的是这里的色度、饱和度的定义均和HIS颜色空间不同。该空间比RGB模式更接近于人对色彩的感知,在计算机领域应用最为广泛。

圆锥的顶面对应于亮度V=1(最亮)。色度H由目标位置绕V轴的旋转角给定:0°对应红色,120°对应绿色,240°对应蓝色(正好为RGB三原色)。在HSV空间中,每种颜色和他的补色相差180°。饱和度S取值范围为0~1,对应圆锥顶面的半径为1.要注意的是饱和度为1的颜色,其纯度一般小于1.在圆锥的顶点处,V=0,H和S无定义表示最暗的黑色;在原罪的顶面中心处,S=0,V=1,H无定义,代表最亮的白色。从该点到原点,代表亮度渐暗的灰色,对于这些点,S0,H均无定义。在圆锥顶面的圆周上的颜色,V=1,S=1,即纯色。如图,斜边表示亮度V,每个圆面的半径方向表示饱和度S。

我们来看一下HSV图片的矩阵形式:

BGR:

[[[180 204 220] [176 200 219] [171 192 216] ... [144 169 217] [142 168 219] [145 173 223]] [[171 195 211] [167 190 209] [161 183 207] ... [133 157 206] [131 157 207] [133 162 212]] [[165 189 205] [161 184 203] [155 177 201] ... [124 149 197] [122 149 199] [125 154 204]] ...

...

... [ 35 60 113] [ 51 77 130] [ 65 91 144]]]

HSV

[[[ 18 46 220] [ 17 50 219] [ 14 53 216] ... [ 10 86 217] [ 10 90 219] [ 11 89 223]] [[ 18 48 211] [ 16 51 209] [ 14 57 207] ... [ 10 90 206] [ 10 94 207] [ 11 95 212]] [[ 18 50 205] [ 16 53 203] [ 14 58 201] ... [ 10 94 197] [ 11 99 199] [ 11 99 204]] ...

...

... [ 10 176 113] [ 10 155 130] [ 10 140 144]]]

颜色直方图

颜色直方图是在图像检索中被广泛采用的颜色特征。他所描述的是不同色彩在整幅图像中所占的比例,而与每种颜色所处位置无关,既无法描述图像中的具体物体。因此,颜色直方图对物体识别基本没有帮助,但特别适合处理难以进行自动分割的图像。

由于颜色空间太大,计算颜色直方图需要将颜色空间划分成若干个小区间,每个小区间成为直方图的一个bin,这个过程称为颜色量化。然后,通过计算落在每个bin内的像素数量可以得到颜色直方图。颜色量化有多种方式,有向量量化,聚类方法和神经网络方法。最常用的就是向量量化,即将颜色空间的各个维度均匀的进行划分。

颜色直方图特征匹配方法:距离法,中心距法,直方图相交法、参考颜色表法、累加颜色直方图法等。

在OPenCV中,我们使用函数cv2.calcHist()方法计算颜色直方图,此函数的可选参数:图像img、使用的通道channels、使用的掩模mask、大小HistSize和直方图柱的范围ranges。

import cv2
import matplotlib.pyplot as plt
img=cv2.imread('F:\Image\\test1.jpg',cv2.IMREAD_COLOR)
#展示原图片
cv2.imshow('',img)
cv2.waitKey(0)
#分为三个通道
color=('b','g','r')
for i,col in enumerate(color):histr=cv2.calcHist([img],[i],None,[256],[0,256])#画图plt.plot(histr,color=col)
plt.show()

上面第一个图象是原图,第二个就是实现对该图像进行颜色直方图的分析的线性图。然后覆盖了源代码。

OpenCV图像色调、对比度变化

毫无疑问,图像的色调、颜色、对比度、明暗度均可以调整,由于物体的类别与颜色关系不大,所以调整图片的色调和颜色也能够作为数据增强的手段之一。比如后面我们要介绍到的物体识别,图像检测等,都会把图像转变为灰色。

我么先来认识一下图像色调变化:


import cv2
import numpy as np
img=cv2.imread('F:\Image\\test2.jpg',cv2.IMREAD_COLOR)
cv2.imshow('原图片',img)
hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
#改变色调
hsv[:,:,0]=(hsv[:,:,0]+10)%180
#改变饱和度
hsv[:,:,1]=(hsv[:,:,1]+10)%255
#改变明暗度hsv[:,:,2]=(hsv[:,:,2]+10)%255
#转化为RGB格式
img1=cv2.cvtColor(hsv,cv2.COLOR_HSV2BGR)
#显示图片
cv2.imshow('图片调整',img1)
cv2.waitKey(0)

(1)原图                                                                       (2)HSV图片

上面的代码只是简单的对颜色转换进行了实现,大家可以根据博主前面介绍的方法取试验一下,能够将图片转化成各式各样的。好了,本节内容就到此结束了!拜了个拜!

传统图像处理之颜色特征相关推荐

  1. 图像处理之颜色特征描述

    一.前言 颜色特征属于图像的内部特征,描述了图像或图像区域所对应景物的表面性质.颜色特征与其他视觉特征相比,它对图像的尺寸.方向.视角等变化不敏感,因此颜色特征被广泛应用于图像识别.根据颜色与空间属性 ...

  2. 基于颜色特征,形状特征和纹理特征的数字图像的检索(Digital Image Retrieval)MATLAB GUI实现

    ** 数字图像的检索 下载地址:代码.数据集下载地址 如需论文请联系:hqucuihao@163.com ** 1. 摘要 随着互联网发展的日新月异,人们对于信息的需求不再是简单的文字,大量的图像.语 ...

  3. 详解车道线检测算法之传统图像处理

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 / 导读 / 车道线检测算法分为传统图像处理方法和深度学习方法.本文详细介绍用传统图像处理方法来解决车 ...

  4. 不同图像锐化算子提取的图像信息有哪些不同_传统图像处理

    传统图像处理 一.边缘检测算子 ①Sobel算子 该算子中引入了类似局部平均的运算,因此对噪声具有平滑作用,能很好的消除噪声的影响.与Prewitt算子相比,Sobel算子对于像素的位置的影响做了加权 ...

  5. 传统图像处理与深度学习又一结合:时空多尺度非局部自相似集成视频超分

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:AI算法与图像处理 导读 本文将传统图像处理中的自相似性 ...

  6. 常用的图像特征颜色特征、纹理特征、形状特征、空间关系特征

    http://www.360doc.com/content/10/0601/10/1412027_30625801.shtml 常用的图像特征有颜色特征.纹理特征.形状特征.空间关系特征. 一 颜色特 ...

  7. 【论文解读】传统图像处理与深度学习又一结合:时空多尺度非局部自相似集成视频超分...

    作者丨Happy 编辑丨极市平台 导读 本文将传统图像处理中的自相似性.金字塔等思路与深度学习相结合进行视频超分,得到了SOTA指标,并为传统图像处理思路与深度学习提供了一个新的结合点.>> ...

  8. 一种结合颜色特征和区域生长的疾病斑图像分割方法(复杂环境下分割效果好)

    一种结合颜色特征和区域生长的疾病斑图像分割方法 A B S T R A C T 文提出了一种基于先进综合颜色特征(ACCF)和区域生长法的病害叶片分割方法.采集到的病叶图像存在两个主要问题:背景杂波和 ...

  9. 如何使用传统图像处理方法进行大米的计数和长轴方向标记

    1 引言 最近使用传统方法进行石头检测和圆的检测的文章,受到了大家一致的好评. 嗯嗯,应该是一致的好评! 今天我们来研究一个新的方向,如何使用传统方法来进行大米的分割计数和大米长轴方向的标记? 如上图 ...

最新文章

  1. python向上取整_Python 之 向上取整、向下取整以及四舍五入函数
  2. java中抽象类继承抽象类_Java中的抽象类用示例解释
  3. mysql数据库表的导入导出
  4. 互联网晚报 | 12月6日 星期一 | 荣耀线下门店超3万家;鸿蒙系统明年正式登陆欧洲;凯撒旅业与众信旅游终止合并...
  5. golang(7 方法重写)
  6. 复工大势下,远程办公的科技企业只能“坐以待毙”吗?
  7. 六大排序原理(十六)
  8. java day61【 SpringMVC 的基本概念 、 SpringMVC 的入门 、 请求参数的绑定 、常用注解 】...
  9. 超实用的 Nginx 极简教程,覆盖了常用场景(转)
  10. 【BZOJ4538】【HNOI2016】网络(树链剖分,线段树,堆)
  11. Java编程:按照指定的字段顺序,将 Bean 转换为 Json
  12. 电脑照片尺寸如何调整成自己想要的
  13. 京瓷300i_kyocera cs 300i kx驱动下载
  14. 在MFC中的socket编程
  15. ionic4基础教程(案例和实战小demo)
  16. VGG16 VGG19
  17. 深度学习——感知机:多层感知机(multi-layered perceptron)图文详解
  18. 赫夫曼树、赫夫曼编码
  19. 成为高级程序员的10个步骤
  20. Python、MATLAB股票投资:ARIMA模型最优的选股、投资组合方案与预测

热门文章

  1. Android开发技巧——自定义控件之组合控件
  2. 外媒称字节跳动将开发智能手机 官方不予置评
  3. Win10 C盘 系统和保留 占用空间 非常大
  4. 9.条件语句(if语句)
  5. 2017面向对象程序设计(Java)第十一周学习总结
  6. 2023 年值得推荐的 Vue 库
  7. android8.1官方下载,【安卓市场】安卓市场app官方下载 v7.8.1.81 手机版-七喜软件园...
  8. shell条件测试操作
  9. 笔记本进入pe却看不到计算机硬盘,11代cpu笔记本进pe看不到硬盘解决方法(PE完美解决)...
  10. 章鱼加速器报名 | Substrate 应用链项目全球招募中,加速 Web3.0 革命