计算机视觉PyTorch实现图像着色 - (一)

简介: 计算机视觉PyTorch实现图像着色 - (一)

在介绍图像着色原理之前,先介绍一下opencv的颜色空间


目前基于opencv实现图像原理中定义的颜色空间分为三种:


RGB


RGB就是常说的光学三原色,R代表Red(红色),G代表Green(绿色),B代表Blue(蓝色),取值范围在[0,255]。自然界中肉眼所能看到的任何色彩都可以由这三种色彩混合叠加而成,因此也称为加色模式。

c2fc1dc9f22146fc889b2cc4fc0b11bf.png

import cv2
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
image='color.jpg'
img=cv2.imread(image,cv2.IMREAD_COLOR)
b,g,r=cv2.split(img)
img2=cv2.merge([r,g,b])
img_b=img[:,:,0]
img_g=img[:,:,1]
img_r=img[:,:,2]
plt.figure(figsize=(12,8))
plt.subplot(2,2,1)
plt.imshow(img2)
plt.title('原始图像')
plt.axis('off')
plt.subplot(2,2,2)
plt.imshow(img_b)
plt.title("B")
plt.axis('off')
plt.subplot(2,2,3)
plt.imshow(img_g)
plt.title("G")
plt.axis('off')
plt.subplot(2,2,4)
plt.imshow(img_r)
plt.title("R")
plt.axis('off')
plt.show()

4af18eb7c3aa40f099c0aad585299fec.png


为了解决matplotlib中文乱码问题


#window
plt.rcParams['font.sans-serif'] = ['KaiTi'] # 指定默认字体
#mac
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS'] # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题


opencv读取图片是BGR格式,matplotlib展示要RGB格式,所以需要对图像进行通道转换


HSV


色调H:用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,紫色为300°;

饱和度S:饱和度S表示颜色接近光谱色的程度。一种颜色,可以看成是某种光谱色与白色混合的结果。其中光谱色所占的比例愈大,颜色接近光谱色的程度就愈高,颜色的饱和度也就愈高。饱和度高,颜色则深而艳。光谱色的白光成分为0,饱和度达到最高。通常取值范围为0%~100%,值越大,颜色越饱和。

明度V:明度表示颜色明亮的程度,对于光源色,明度值与发光体的光亮度有关;对于物体色,此值和物体的透射比或反射比有关。通常取值范围为0%(黑)到100%(白)


ea7a7072b34444a8a73458ef40f5f51a.png

import cv2
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
image='color.jpg'
img=cv2.imread(image,cv2.IMREAD_COLOR)
b,g,r=cv2.split(img)
img2=cv2.merge([r,g,b])
img_hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
img_h=img_hsv[:,:,0]
img_s=img_hsv[:,:,1]
img_v=img_hsv[:,:,2]
plt.figure(figsize=(12,8))
plt.subplot(2,2,1)
plt.imshow(img2)
plt.title('原始图像')
plt.axis('off')
plt.subplot(2,2,2)
plt.imshow(img_h)
plt.title("H")
plt.axis('off')
plt.subplot(2,2,3)
plt.imshow(img_s)
plt.title("S")
plt.axis('off')
plt.subplot(2,2,4)
plt.imshow(img_v)
plt.title("V")
plt.axis('off')
plt.show()

c500db6e5e0d426491de437a89307d26.png


Lab

Lab颜色模型由三个要素组成

L:代表亮度,范围在[0,100],0时代表黑色,100时代表白色

a:a包括的颜色是从深绿色(低亮度值)到灰色(中亮度值)再到亮粉红色(高亮度值),范围是从负数变到正数,对应颜色从绿色变到红色,取值[-128,+127],其中值为0时,为灰色。

b :b是从亮蓝色(低亮度值)到灰色(中亮度值)再到黄色(高亮度值),范围是从负数变到正数,对应颜色从蓝色变到黄色,取值[-128,+127],其中值为0时,为灰色。

8247897ec5ca4c91b7f58c93f2513b04.png

import cv2
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
image='color.jpg'
img=cv2.imread(image,cv2.IMREAD_COLOR)
b,g,r=cv2.split(img)
img2=cv2.merge([r,g,b])
img_lab=cv2.cvtColor(img,cv2.COLOR_BGR2LAB)
img_l=img_lab[:,:,0]
img_a=img_lab[:,:,1]
img_b=img_lab[:,:,2]
plt.figure(figsize=(12,8))
plt.subplot(2,2,1)
plt.imshow(img2)
plt.title('原始图像')
plt.axis('off')
plt.subplot(2,2,2)
plt.imshow(img_l)
plt.title("L")
plt.axis('off')
plt.subplot(2,2,3)
plt.imshow(img_a)
plt.title("A")
plt.axis('off')
plt.subplot(2,2,4)
plt.imshow(img_b)
plt.title("B")
plt.axis('off')
plt.show()

4b7cb42e328a482f8266b90d2b68059e.png


相关文章
|
9月前
|
机器学习/深度学习 PyTorch 算法框架/工具
Pytorch CIFAR10图像分类 Swin Transformer篇(一)
Pytorch CIFAR10图像分类 Swin Transformer篇(一)
|
9月前
|
机器学习/深度学习 数据可视化 算法
Pytorch CIFAR10图像分类 Swin Transformer篇(二)
Pytorch CIFAR10图像分类 Swin Transformer篇(二)
|
9月前
|
机器学习/深度学习 PyTorch 算法框架/工具
【PyTorch实战演练】使用Cifar10数据集训练LeNet5网络并实现图像分类(附代码)
【PyTorch实战演练】使用Cifar10数据集训练LeNet5网络并实现图像分类(附代码)
573 0
|
20天前
|
机器学习/深度学习 算法 PyTorch
昇腾910-PyTorch 实现 ResNet50图像分类
本实验基于PyTorch,在昇腾平台上使用ResNet50对CIFAR10数据集进行图像分类训练。内容涵盖ResNet50的网络架构、残差模块分析及训练代码详解。通过端到端的实战讲解,帮助读者理解如何在深度学习中应用ResNet50模型,并实现高效的图像分类任务。实验包括数据预处理、模型搭建、训练与测试等环节,旨在提升模型的准确率和训练效率。
112 54
|
20天前
|
机器学习/深度学习 算法 PyTorch
PyTorch 实现MobileNetV1用于图像分类
本实验基于PyTorch和昇腾平台,详细讲解了如何使用MobileNetV1模型对CIFAR10数据集进行图像分类。内容涵盖MobileNetV1的特点、网络架构剖析(尤其是深度可分离卷积)、代码实现及训练过程。通过该实验,读者可以掌握轻量级CNN模型在移动端或嵌入式设备中的应用,并了解其在资源受限环境下的高效表现。实验包括数据预处理、模型训练与测试等环节,帮助用户快速上手并优化模型性能。
98 53
|
25天前
|
机器学习/深度学习 算法 PyTorch
昇腾910-PyTorch 实现 GoogleNet图像分类
本实验基于PyTorch在昇腾平台上实现GoogleNet模型,针对CIFAR-10数据集进行图像分类。内容涵盖GoogleNet的创新点(如Inception模块、1x1卷积、全局平均池化等)、网络架构解析及代码实战分析。通过详细讲解模型搭建、数据预处理、训练与测试过程,帮助读者掌握如何使用经典CNN模型进行高效图像分类。实验中还介绍了辅助分类器、梯度传播优化等技术细节,并提供了完整的训练和测试代码示例。
|
25天前
|
机器学习/深度学习 算法 PyTorch
昇腾910-PyTorch 实现 Alexnet图像分类
本文介绍了在昇腾平台上使用PyTorch实现AlexNet对CIFAR-10数据集进行图像分类的实战。内容涵盖AlexNet的创新点、网络架构解析及代码实现,包括ReLU激活函数、Dropout、重叠最大池化等技术的应用。实验中详细展示了如何构建模型、加载数据集、定义训练和测试模块,并通过60个epoch的训练验证模型性能。
|
4月前
|
机器学习/深度学习 PyTorch 算法框架/工具
聊一聊计算机视觉中常用的注意力机制以及Pytorch代码实现
本文介绍了几种常用的计算机视觉注意力机制及其PyTorch实现,包括SENet、CBAM、BAM、ECA-Net、SA-Net、Polarized Self-Attention、Spatial Group-wise Enhance和Coordinate Attention等,每种方法都附有详细的网络结构说明和实验结果分析。通过这些注意力机制的应用,可以有效提升模型在目标检测任务上的性能。此外,作者还提供了实验数据集的基本情况及baseline模型的选择与实验结果,方便读者理解和复现。
232 0
聊一聊计算机视觉中常用的注意力机制以及Pytorch代码实现
|
5月前
|
机器学习/深度学习 编解码 自动驾驶
计算机视觉之图像到图像的翻译
图像到图像的翻译(Image-to-Image Translation)是指将一种图像从一种表示转换为另一种表示的过程。该任务的目标是在保证图像语义信息的前提下,将图像风格、颜色或其他视觉特征进行转换。该技术在计算机视觉领域具有广泛应用,例如图像风格迁移、图像修复、图像增强、超分辨率、语义分割等。
117 4
|
9月前
|
编解码 边缘计算 自然语言处理
2024年5月计算机视觉论文推荐:包括扩散模型、视觉语言模型、图像编辑和生成、视频处理和生成以及图像识别等各个主题
五月发布的计算机视觉领域重要论文涵盖了扩散模型、视觉语言模型、图像生成与编辑及目标检测。亮点包括:1) Dual3D提出双模式推理策略,实现高效文本到3D图像生成;2) CAT3D利用多视图扩散模型创建3D场景,仅需少量图像;3) Hunyuan-DiT是多分辨率的中文理解扩散Transformer,可用于多模态对话和图像生成;4) 通过潜在扩散模型从EEG数据重建自然主义音乐,展示复杂音频重建潜力。此外,还有关于视觉语言模型和图像编辑的创新工作,如BlobGEN用于合成具有控制性的图像。
332 3

热门文章

最新文章