图像处理基础 | 查看两张图像的亮度差异,Y通道相减

news2024/12/24 20:03:50

两张图像的Y通道相减通常用于图像差异分析或比较,尤其是在亮度方面。具体来说,这一操作是基于YCbCr颜色空间中的Y通道进行的,其中Y通道代表图像的亮度信息(亮度成分),而Cb和Cr通道分别代表色度成分(色彩信息)。

具体含义:
YCbCr颜色空间:YCbCr是一个广泛用于图像处理和视频压缩的颜色空间。在这个空间中:
Y 通道表示图像的亮度(明暗)信息。
Cb 和 Cr 通道则分别表示色度(蓝色差和红色差)信息。
Y通道相减:当我们对两张图像的Y通道进行相减时,实际上是在比较两张图像的亮度信息,目的是计算它们在亮度方面的差异。这种方法对于图像的亮度变化、对比度、或者图像间的细微差异检测特别有用。
举个例子:
假设有两张图像,它们的内容非常相似,只是在亮度方面有一些细微的差异。通过提取它们的Y通道并进行相减,你可以获得一张图像,其中显示的是两者亮度上的差异。

如果结果值为零:表示两张图像的亮度完全相同。
如果结果值为正或负:表示两张图像的亮度存在差异,具体是某一张图像比另一张图像亮或暗。
python代码如下:

import cv2
import numpy as np
# 查看两张图像的亮度差异
# 读取两张图像
image1 = cv2.imread("4.jpg")
image2 = cv2.imread('3.jpg')

# 设置高斯核的大小和标准差
kernel_size = (3, 3)  # 核的大小,必须是奇数
sigma = 0  # 标准差,0会自动根据核的大小计算 sigma越大,模糊越强

# 应用高斯模糊
blurred_image = cv2.GaussianBlur(image2, kernel_size, sigma)

# 将图像转换为YCbCr颜色空间
if len(image1.shape) == 2:  # 如果是灰度图像
    image1 = cv2.cvtColor(image1, cv2.COLOR_GRAY2BGR)

if len(blurred_image.shape) == 2:  # 如果是灰度图像
    blurred_image = cv2.cvtColor(blurred_image, cv2.COLOR_GRAY2BGR)


ycbcr1 = cv2.cvtColor(image1, cv2.COLOR_BGR2YCrCb)
ycbcr2 = cv2.cvtColor(blurred_image, cv2.COLOR_BGR2YCrCb)

# 提取Y通道
y_channel1 = ycbcr1[:, :, 0]
y_channel2 = ycbcr2[:, :, 0]

# 对Y通道进行相减
y_diff = cv2.absdiff(y_channel1, y_channel2)

# 提取Cb和Cr通道
cb_channel1 = ycbcr1[:, :, 1]  # 蓝色差(Cb)
cr_channel1 = ycbcr1[:, :, 2]  # 红色差(Cr)

cb_channel2 = ycbcr2[:, :, 1]  # 蓝色差(Cb)
cr_channel2 = ycbcr2[:, :, 2]  # 红色差(Cr)

# 对Cb通道和Cr通道分别进行相减
cb_diff = cv2.absdiff(cb_channel1, cb_channel2)  # 蓝色差异
cr_diff = cv2.absdiff(cr_channel1, cr_channel2)  # 红色差异

cv2.imwrite('blurred_image.jpg', blurred_image)
cv2.imwrite('y_channel_diff.jpg', y_diff)

cv2.imwrite('cb_diff.jpg', cb_diff)
cv2.imwrite('cr_diff.jpg', cr_diff)




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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

『Linux学习笔记』FRPC 详细介绍及配置解析!

『Linux学习笔记』FRPC 详细介绍及配置解析! 文章目录 一. FRPC 详细介绍及配置解析FRPC 的主要功能FRPC 配置文件解析全局配置代理配置第一个代理服务第二个代理服务 配置文件整体工作流程常见配置项说明FRPC 的使用步骤注意事项结论 二. 参考文献 一. FRPC 详细介…

WPS工具栏灰色怎么办

WPS离线不登录,开启工具栏等相关功能 当你在使用WPS的过程中,若因网络问题或其他特殊原因,导致无法登录使用WPS时,可根据以下步骤开启离线兼容模式,开启此模式后,可在未登录的状态下,激活并使用…

【微信小程序】2|轮播图 | 我的咖啡店-综合实训

轮播图 引言 在微信小程序中,轮播图是一种常见的用户界面元素,用于展示广告、产品图片等。本文将通过“我的咖啡店”小程序的轮播图实现,详细介绍如何在微信小程序中创建和管理轮播图。 轮播图数据准备 首先,在home.js文件中&a…

JavaEE进阶--mybatis使用测试日志参数传递浏览器访问

文章目录 1.项目创建2.mybatis的使用2.1创建初始页面2.2补充yml文件2.3navicate表2.4用户类的编写2.5查询接口2.6运行测试 3.细节说明3.1java开发规范3.2关于包3.3持久层代码 4.测试文件4.1如何生成4.2生成位置4.3补充方法 5.配置mybatis日志6.参数传递6.1单个参数6.2多个参数 …

IDEA用jformdesigner插件做管理系统MVC架构

在 IntelliJ IDEA 中结合 JFormDesigner 插件,通过 Swing 框架实现一个管理系统的 MVC 架构是一种经典的开发方式。以下是具体的步骤和实现思路,包含从项目创建到 MVC 架构的核心代码实现。 1. 项目结构设计 为了清晰的 MVC 分层架构,建议按…

学习Cookie 提升

目录 Cookie 的覆盖​​​​​​​ Cookie下的path 特点 设置Cookie 路径 实例 Cookie的最大存活时间 设置Cookie 存活时间 实例 Cookie 和session的区别 和联系 Cookie 的覆盖 当 key相同 和只要path的上级目录的路径相同,就可以被替换掉 value 值 如下图…

021、深入解析前端请求拦截器

目录 深入解析前端请求拦截器: 1. 引言 2. 核心实现与基础概念 2.1 基础拦截器实现 2.2 响应拦截器配置 3. 实际应用场景 3.1 完整的用户认证系统 3.2 文件上传系统 3.3 API请求缓存系统 3.4 请求重试机制 3.5 国际化处理 4. 性能优化实践 4.1 请求合并…

4、mysql高阶语句

mysql高阶语句是对复杂的条件进行查询的操作。 排序—order by 加了desc表示由大到小 1、查询name和score,地址都是云南西路的按id进行由小到大排序 2、查询name和score,先按hobbid进行排序,再把结果按id进行排序 第一段字段必须要有相同的…

叉车作业如何确认安全距离——UWB测距防撞系统的应用

叉车在工业环境中运行,常常需要在狭窄的空间内完成货物的搬运和堆垛,这对操作员的技术水平和安全意识提出了极高的要求。传统的叉车作业依赖操作员的经验和视觉判断来确认安全距离,然而这种方式往往存在误差,特别是在视线受阻或光…

LLaVA 多模态大模型:两阶段训练,实现视觉与语言模态的高效融合

LLaVA 多模态大模型:两阶段训练,实现视觉与语言模态的高效融合 论文大纲理解确认目标分析过程实现步骤效果展示金手指 结构分析1. 层级结构分析叠加形态(从基础到高级)构成形态(部分到整体)分化形态&#x…

PostgreSQL 的历史

title: PostgreSQL 的历史 date: 2024/12/23 updated: 2024/12/23 author: cmdragon excerpt: PostgreSQL 是一款功能强大且广泛使用的开源关系型数据库管理系统。其历史可以追溯到1986年,当时由加州大学伯克利分校的一个研究团队开发。文章将深入探讨 PostgreSQL 的起源、…

台球助教平台系统开发APP和小程序信息收藏功能需求解析(第十二章)

以下是开发台球助教系统客户端(APP,小程序,H5)几端的信息收藏功能的详细需求和功能说明,内容比较详细,可以说是一个教科书式的详细说明了,这套需求说明不仅仅用在我们的台球助教系统程序上&…

SRE 与 DevOps记录

flashcat https://flashcat.cloud

Linux Shell 脚本编程基础知识篇—shell 运算命令详解

ℹ️大家好,我是练小杰,本文继续Linux shell脚本编程的基础知识内容,接着讲算术运算命令的详细操作~~ 复习:【shell简介以及基本操作】 更多Linux 相关内容请点击👉“Linux专栏”~ 文章目录 let运算命令的用法let 的高…

2002 - Can‘t connect to server on ‘192.168.1.XX‘ (36)

参考:2002 - Can‘t connect to server on ‘192.168.1.XX‘ (36) ubantu20.04,mysql5.7.13 navicat 远程连接数据库报错 2002 - Can’t connect to server on ‘192.168.1.61’ (36) 一、查看数据库服务是否有启动,发现有启动 systemctl status mysql…

GitCode 光引计划投稿|MilvusPlus:开启向量数据库新篇章

在人工智能和大数据时代,向量数据库作为处理非结构化数据的核心技术,正变得越来越重要。MilvusPlus,作为「光引计划」的一部分,应运而生,旨在提供一个高性能、易扩展、全功能的向量数据库解决方案。项目背景根植于对现…

一起学Git【第四节:添加和提交文件】

通过前三节的学习,基本上对Git有了初步的了解,下面开始进行文件的添加和提交的流程。 这里主要涉及四个命令: git init 创建仓库git status查看仓库状态git add添加至暂存区git commit提交文件之前已经使用过git init命令了,此处不再具体讲解。参照一起学Git【第二节:创建…

RISC-V架构的压缩指令集介绍

1、压缩指令集介绍 RISC-V的压缩指令集(C扩展)‌是一种设计用于减少代码大小和提高性能的技术。标准的RISC-V指令是32位,压缩指令集可以将部分32位的指令用16位的指令替代,从未减小程序占用存储空间的大小,提高指令密…

CosyVoice安装过程详解

CosyVoice安装过程详解 安装过程参考官方文档 前情提要 环境:Windows子系统WSL下安装的Ubunt22.4python环境管理:MiniConda3git 1. Clone代码 $ git clone --recursive https://github.com/FunAudioLLM/CosyVoice.git # 若是submodule下载失败&…

docker 容器的基本使用

docker 容器 一、docker是什么? 软件的打包技术,就是将算乱的多个文件打包为一个整体,打包技术在没有docker容器之前,一直是有这种需求的,比如上节课我把我安装的虚拟机给你们打包了,前面的这种打包方式是…