图像处理技术与应用(四)

图像处理技术与应用入门

颜色空间及其转换

颜色空间是一种用于在数字图像中表达和指定颜色的方法。不同的颜色空间使用不同的方式来定义颜色,每种方式都有其特定的用途和优势。以下是一些常见的颜色空间及其特点:

RGB(红绿蓝):这是最常见的颜色空间,用于计算机显示器和数字设备。在RGB颜色空间中,每种颜色都是由红色、绿色和蓝色三个基色的不同组合来定义的。每个基色可以有不同的强度,通常用0到255的整数表示,其中0表示该颜色的完全缺失,255表示该颜色的最大强度。

CMYK(青色、品红色、黄色、黑色):这种颜色空间主要用于印刷行业。与RGB不同,CMYK是一种减色模型,其中青色(Cyan)、品红色(Magenta)、黄色(Yellow)和黑色(Key)的混合用来吸收光,而不是发射光。在印刷过程中,这些颜色的不同组合可以产生几乎所有其他颜色。

HSV(色相、饱和度、亮度):HSV颜色空间是根据人眼对颜色的感知来定义的。色相(Hue)是颜色在色轮上的位置,饱和度(Saturation)是颜色的纯度,亮度(Value)是颜色的明亮程度。HSV颜色空间在图像处理中很有用,因为它可以独立地改变颜色的各个方面。

HSL(色相、饱和度、亮度):HSL与HSV类似,但亮度的概念略有不同。在HSL中,亮度(Lightness)是指颜色的明亮或暗淡程度,而HSV中的亮度(Value)是指颜色的明暗程度加上白色。HSL在网页设计和图形设计中很受欢迎。

YUV(亮度、色度):YUV颜色空间主要用于视频系统中,它将亮度信息(Y)与颜色信息(U和V)分开。这种方法可以减少颜色信息的带宽,因为人眼对亮度变化比对颜色变化更敏感。

颜色转换是指在不同的颜色空间之间转换图像颜色的过程。例如,将RGB图像转换为灰度图像就是将彩色信息转换为只有亮度信息的过程。转换通常需要数学公式和算法来确保颜色在新的颜色空间中正确地表示。

在Python的skimage库中,color.rgb2gray函数用于将RGB图像转换为灰度图像。这个函数使用前面提到的权重来计算每个像素的灰度值,从而得到一个只有亮度信息的单通道图像。这种转换在图像分析和机器视觉中很常见,因为它简化了图像处理任务,并减少了计算量。

rgb转灰度图

在图像处理中,将彩色图像转换为灰度图像是一个常见的操作。color.rgb2gray 函数是 skimage.color 模块中的一个函数,用于执行这种转换。

彩色图像通常由三个颜色通道组成:红色、绿色和蓝色(RGB)。每个像素在这三个通道上都有一个值,这些值共同决定了像素的颜色。例如,一个像素可能具有 (R, G, B) 值为 (255, 0, 0),这意味着它是纯红色的。

灰度图像只有一个通道,每个像素只有一个值,这个值代表了像素的亮度。在灰度图像中,较亮的区域有较高的值,较暗的区域有较低的值。灰度图像的像素值通常在 0 到 255 之间,其中 0 表示黑色,255 表示白色。

color.rgb2gray 函数通过一定的权重将彩色图像的三个通道合并成一个通道。这种转换通常使用以下公式:

gray=0.299×R+0.587×G+0.114×B

这里的权重是基于人眼对不同颜色的敏感度。绿色通道的权重最高,因为人眼对绿色的敏感度最高,对蓝色的敏感度最低,因此蓝色通道的权重最低。

例如,如果有一个像素的 RGB 值为 (100, 150, 200),那么它的灰度值将是:

gray=0.299×100+0.587×150+0.114×200≈148.5g

因此,这个像素在灰度图像中的值将是 148 或 149(取决于具体的实现是否四舍五入)。

转换后的灰度图像可以用于简化图像分析,减少计算量,并且有时可以突出某些特征,使其更容易检测或识别。

from skimage import io, data, color
img = data.hubble_deep_field()
gray = color.rgb2gray(img)
io.imshow(gray)

                                        原图                                              灰度转换

rgb转hsv

RGB到HSV的转换是一个数学过程,它将红色、绿色、蓝色的颜色值转换为色相(Hue)、饱和度(Saturation)和亮度(Value)的值。在Python中,您可以使用skimage.color模块中的rgb2hsv函数来实现这一转换。

以下是RGB到HSV转换的基本步骤:

1.归一化RGB值:首先,将RGB值从0-255的范围转换为0-1的范围。

2.找出最大和最小值:对于每个像素,找出三个颜色通道中的最大值(Max)和最小值(Min)。

3.计算色相(H):

  1. 如果Max等于Min,那么H = 0(无色相)。
  2. 如果Max是R,那么H = (G - B) / (Max - Min)。
  3. 如果Max是G,那么H = 2 + (B - R) / (Max - Min)。
  4. 如果Max是B,那么H = 4 + (R - G) / (Max - Min)。
  5. 将H乘以60,得到色相的角度(在0到360之间)。

4.计算饱和度(S):

  1. 如果Max为0,则S = 0(无饱和度)。
  2. 否则,S = (Max - Min) / Max。
  3. 将S乘以255,得到饱和度的值(在0到255之间)。

5.计算亮度(V):

  1. V = Max。
  2. 将V乘以255,得到亮度的值(在0到255之间)。

RGB转化到HSV的算法

max=max(R,G,B):

min=min(R,G,B)

V=max(R,G,B)

S=(max-min)/max:

if R = max,H =(G-B)/(max-min)* 60

if G = max,H = 120+(B-R)/(max-min)* 60

if B = max,H = 240 +(R-G)/(max-min)* 60

if H < 0,H = H+ 360

代码:

from skimage import io, data, color

img = data.hubble_deep_field()

gray = color.rgb2hsv(img)    # 色调(H),饱和度(S),亮度(V)

io.imshow(gray)

                                      原图                                              hsv转换

rgb转lab

RGB到Lab颜色空间的转换是一种将红色、绿色、蓝色颜色值转换为CIE Lab颜色空间的过程。Lab颜色空间是一种设备无关的颜色空间,它旨在与人类的视觉感知更为一致。在Lab颜色空间中,L代表亮度,a和b代表颜色对立维度,其中a表示从绿到红的颜色范围,b表示从蓝到黄的颜色范围。

from skimage import io, data, color
img = data.hubble_deep_field()
gray = color.rgb2lab(img)    # Lab颜色模型由三个要素组成,一个要素是亮度(L),a 和b是两个颜色通道。
# a包括的颜色是从深绿色(低亮度值)到灰色(中亮度值)再到亮粉红色(高亮度值);
# b是从亮蓝色(低亮度值)到灰色(中亮度值)再到黄色(高亮度值)。
io.imshow(gray)

                                       原图                                                              hsv转换

Hvs转rgb

HSV转化到RGB的算法

if s = 0R=G=B=VelseH /= 60;i = INTEGER(H)f = H - ia = V * ( 1 - s )b = V * ( 1 - s * f )c = V * ( 1 - s * (1 - f ) )switch(i)case 0: R = V; G = c; B = a;case 1: R = b; G = v; B = a;case 2: R = a; G = v; B = c;case 3: R = a; G = b; B = v;case 4: R = c; G = a; B = v;case 5: R = v; G = a; B = b;

from skimage import io, data, color

img = data.hubble_deep_field()

gray = color.hsv2rgb(img)

io.imshow(gray)

                                        原图                                              hsv转换

Lab转rgb

from skimage import io, data, color

img = data.hubble_deep_field()

gray = color.lab2rgb(img)

io.imshow(gray)

                                       原图                                                      hsv转换

 根据标签值对图片进行着色

from skimage import io, color
import numpy as np

img = io.imread("dd.jpg")
gray = color.rgb2gray(img)
rows, cols = gray.shape
labels = np.zeros([rows,cols])

for i in range(rows):
    for j in range(cols):
        if (gray[i,j]<0.4):
            labels[i,j]=0
        elif(gray[i,j]<0.75):
            labels[i,j]=1
        else:
            labels[i,j]=2
            
dstt = color.label2rgb(labels)
io.imshow(dstt)

读取一个彩色图像,将其转换为灰度图像,然后根据灰度值将图像分割为三个区域(暗、中、亮),并使用不同的颜色对每个区域进行标记,最后显示了着色后的图像。这种方法可以用于图像分析、分割或可视化,以突出不同的图像区域。

                                        原图                         ​​​​​​​        ​​​​​​​        ​​​​​​​标签着色图像

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/599708.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

每日一题(PTAL2):列车调度--贪心+二分

选择去维护一个最小区间 代码1&#xff1a; #include<bits/stdc.h> using namespace std; int main() {int n;cin>>n;int num;vector <int> v;int res0;for(int i0;i<n;i){cin>>num;int locv.size();int left0;int rightv.size()-1;while(left<…

AIGC技术带给我们什么?基于AIGC原理及其技术更迭的思考

AIGC技术带给我们什么&#xff1f;基于AIGC原理以及技术更迭的思考 前言 AI&#xff0c;这个词在如今人们的视野中出现频率几乎超过了所有一切其他的事物&#xff0c;更有意思的是&#xff0c;出现频率仅次于这个词的&#xff0c;几乎都会加上一个修饰亦或是前缀——AI&#…

快速排序找出第K大的元素

有序数组里第 K 大的元素就是index 为 array.length - k 的元素。 快速排序的思路主要就是选一个基准值p&#xff0c;然后将小于p的值放在p的左右&#xff0c;大于p的值放在p的右边&#xff0c;然后对左右数组进行递归。 利用这个思路&#xff0c;当我们找到这个基准值对应的 i…

【教学类-50-14】20240505“数一数”图片样式12:数一数(12个“人物”图案)

作品展示 背景需求&#xff1a; 前文做了“”材料”图片的数一数学具&#xff0c;效果不错&#xff0c; https://blog.csdn.net/reasonsummer/article/details/138466325https://blog.csdn.net/reasonsummer/article/details/138466325 为了让图案内容更丰富&#xff0c;我又…

Python Dash库:一个Web应用只需几行代码

大家好&#xff0c;在数据科学领域&#xff0c;数据可视化是将数据以图形化形式展示出来&#xff0c;帮助我们更直观地理解数据。Python中有一个非常流行的数据可视化库叫做Dash&#xff0c;Dash以其简洁、高效和强大的功能而闻名&#xff0c;它允许开发者快速构建交互式Web应用…

【智能算法】人类进化优化算法(HEOA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2024年&#xff0c;J Lian受到人类进化启发&#xff0c;提出了人类进化优化算法&#xff08;Human Evolutionary Optimization Algorithm, HEOA&#xff09;。 2.算法原理 2.1算法思想 …

JavaWEB 框架安全:Spring 漏洞序列.(CVE-2022-22965)

什么叫 Spring 框架. Spring 框架是一个用于构建企业级应用程序的开源框架。它提供了一种全面的编程和配置模型&#xff0c;可以简化应用程序的开发过程。Spring 框架的核心特性包括依赖注入&#xff08;Dependency Injection&#xff09;、面向切面编程&#xff08;Aspect-Or…

Springboot项目学习之各组件的用法和逻辑结构

1.Controller层&#xff08;Controller&#xff09;&#xff1a; 也称为前端控制器或请求处理器&#xff0c;它是项目与用户交互的入口。Controller接收HTTP请求&#xff0c;解析请求参数&#xff0c;调用Service层处理业务逻辑&#xff0c;并返回响应给客户端。 Controller通…

IP证书能免费申请吗

IP SSL证书是一种数字证书&#xff0c;用于保护网络服务器和网络浏览器之间的通信。该证书是一种主要保护公网IP地址的专属信任SSL证书。 IP类型的SSL证书对于直接用IP地址传输数据的技术人员来说&#xff0c;十分重要&#xff01;无论是防洪还是防劫持还是数据加密都起到了关…

【C 数据结构-动态内存管理】4. 无用单元收集(垃圾回收机制)

文章目录 【 1. 问题描述与解决方法 】【 2. 中断回收机制 】 【 1. 问题描述与解决方法 】 问题描述 动态存储管理的运行机制可以概括为&#xff1a;当用户发出申请空间的请求后&#xff0c;系统向用户分配内存&#xff1b;用户运行结束释放存储空间后&#xff0c;系统回收内…

【FL常用插件#1】Ozone11臭氧的安装和使用

本文内容收集自互联网&#xff0c;仅供个人学习参考使用&#xff0c;不允许用于商业用途&#xff0c;造成的侵权行为与本文作者无关 安装 VST2、VST3、AAX和NKS是音频技术界常见的几种插件格式&#xff0c;它们在功能和兼容性上有所不同&#xff1a; VST2 (Virtual Studio Tec…

用户管理中心——数据库设计用户注册逻辑设计

用户管理中心——数据库设计&用户注册逻辑设计 规整项目目录1. 数据库自动生成器的使用实现基本的数据库操作&#xff08;操作user表&#xff09; 2. 注册逻辑的设计(1) 写注册逻辑(2) 实现(3) 测试代码 3. 遇到的问题 规整项目目录 utils–存放工具类&#xff0c;比如加密…

关系型数据库MySQL开发要点之多表设计案例详解代码实现

什么是多表设计 项目开发中 在进行数据库表结构设计时 根据数据模型和业务关系 会根据业务需求和业务模块之间的关系分析设计表结构 由于业务之间互相关联 所以表结构之间也存在着各种联系 主要分为以下三种 一对多 每个部门下是有多个员工的 但是一个员工只能归属一个部…

京东JD商品详情API返回值揭秘:精准掌握商品信息

在当今电子商务繁荣的时代&#xff0c;对于电商平台来说&#xff0c;提供准确、详尽的商品信息对于满足用户需求、提升购物体验至关重要。京东作为中国领先的电商平台&#xff0c;通过其开放的API接口&#xff0c;为开发者提供了获取商品详情的强大工具。本文将深入探讨京东JD商…

FastDFS-单机扩容

描述 周一上班收到用户反馈系统异常&#xff0c;紧急排查日志发现报错&#xff1a;FdfsServerException:错误:28&#xff0c;错误信息:没有足够的存储空间。 解决 根据异常信息判断是文件服务器可用内存不够了&#xff0c;首先登录文件服务器&#xff0c;使用df -h命令查看一…

GMS地下水数值模拟及溶质(包含反应性溶质)运移模拟技术

采用全流程模式将地下水数值模拟软件GMS的操作进行详细剖析和案例联系。不仅使学员掌握地下水数值模拟软件GMS的全过程实际操作技术的基本技能&#xff0c;而且可以深刻理解模拟过程中的关键环节&#xff0c;以解决实际问题能力。同时为满足环评从业人员进一步加强地下水数值模…

AF594-标记羊抗鼠免疫球蛋白(H+L),山羊抗小鼠IgG全长抗体已被交叉吸附在抗人IgG和人血清上,然后再偶联以小化交叉反应性

试剂介绍&#xff1a; AF594-标记羊抗鼠免疫球蛋白(HL)是荧光标记二抗&#xff0c;我们的山羊抗小鼠IgG全长抗体已被交叉吸附在抗人IgG和人血清上&#xff0c;然后再偶联以小化交叉反应性。 这种AF594标记的山羊抗小鼠IgG缀合物通过交叉吸附的山羊抗小鼠IgG全抗体与AF594 NHS酯…

应用层协议——HTTP协议

1. 认识HTTP协议 HTTP&#xff08;Hyper Text Transfer Protocol&#xff09;协议又叫做超文本传输协议&#xff0c;是一个简单的请求-响应协议&#xff0c;HTTP通常运行在TCP之上。 超文本的意思就是超越普通的文本&#xff0c;http允许传送文字&#xff0c;图片&#xff0c…

深入理解nginx http响应限速功能

目录 1. 引言2. 配置参数2.1 limit_rate 配置指令2.2 limit_rate_after 配置指令2.3 其他限速配置 3. 源码分析 1. 引言 在现代互联网应用中&#xff0c;服务器的性能和响应速度是至关重要的。为了保证服务器的稳定性和可靠性&#xff0c;限制客户端对服务器的访问速度是一项重…

Web实操(6),基础知识学习(24~)

1.[ZJCTF 2019]NiZhuanSiWei1 &#xff08;1&#xff09;进入环境后看到一篇php代码&#xff0c;开始我简单的以为是一题常规的php伪协议&#xff0c;多次试错后发现它并没有那么简单&#xff0c;它包含了基础的文件包含&#xff0c;伪协议还有反序列化 &#xff08;2&#x…