灰度实验

        将彩色图像转换为灰度图像的过程称为灰度化,这种做法在图像处理和计算机视觉领域非常常见。

        灰度图与彩色图最大的不同就是:彩色图是由R、G、B三个通道组成,而灰度图只有一个通道,也称为单通道图像,所以彩色图转成灰度图的过程本质上就是将R、G、B三通道合并成一个通道的过程。本实验中一共介绍了三种合并方法,分别是最大值法、平均值法以及加权均值法。

1.灰度图

        每个像素只有一个采样颜色的图像,这类图像通常显示为从最暗黑色到最亮的白色的灰度,尽管理论上这个采样可以任何颜色的不同深浅,甚至可以是不同亮度上的不同颜色。灰度图像与黑白图像不同,在计算机图像领域中黑白图像只有黑色与白色两种颜色;但是,灰度图像在黑色与白色之间还有许多级的颜色深度。灰度图像经常是在单个电磁波频谱如可见光内测量每个像素的亮度得到的,用于显示的灰度图像通常用每个采样像素8位的非线性尺度来保存,这样可以有256级灰度

2.最大值法

        对于彩色图像的每个像素,它会从R、G、B三个通道的值中选出最大的一个,并将其作为灰度图像中对应位置的像素值。

        例如某图像中某像素点的像素值如上图所示,那么在使用最大值法进行灰度化时,就会从该像素点对应的RGB通道中选取最大的像素值作为灰度值,所以在灰度图中的对应位置上,该像素点的像素值就是121。

示例:

import cv2 as cv
import numpy as np# 读取图像
pig = cv.imread('../images/pig.png')
shape = pig.shape # (h, w, c)
img = np.zeros((shape[0], shape[1]), dtype='uint8')
# 循环遍历每一行img[0,0,0]
for i in range(shape[0]):   # [0,0][0,1][0,2][1,0]for j in range(shape[1]):img[i, j] = max(pig[i, j, 0], pig[i, j, 1], pig[i, j, 2])cv.imshow('最大值', img)
cv.waitKey(0)
cv.destroyAllWindows()

结果如图:

3.平均值法

        对于彩色图像的每个像素,它会将R、G、B三个通道的像素值全部加起来,然后再除以三,得到的平均值就是灰度图像中对应位置的像素值。

         例如某图像中某像素点的像素值如上图所示,那么在使用平均值进行灰度化时,其计算结果就是(91+121+46)/3=86(对结果进行取整),所以在灰度图中的对应位置上,该像素点的像素值就是86。

示例:

import cv2 as cv
import numpy as np# 读取图像
pig = cv.imread('../images/pig.png')
shape = pig.shape # (h, w, c)
img = np.zeros((shape[0], shape[1]), dtype='uint8')
# 循环遍历每一行img[0,0,0]
for i in range(shape[0]):   # [0,0][0,1][0,2][1,0]for j in range(shape[1]):# int():转化为更大数据类型,防止溢出img[i, j] = (int(pig[i, j, 0]) + int(pig[i, j, 1]) + int(pig[i, j, 2])) // 3cv.imshow('平均值', img)
cv.waitKey(0)
cv.destroyAllWindows()

结果如下:

 4.加权平均值法

        对于彩色图像的每个像素,它会按照一定的权重去乘以每个通道的像素值,并将其相加,得到最后的值就是灰度图像中对应位置的像素值。本实验中,权重的比例为: R乘以0.299,G乘以0.587,B乘以0.114,这是经过大量实验得到的一个权重比例,也是一个比较常用的权重比例。

        所使用的权重之和应该等于1。这是为了确保生成的灰度图像素值保持在合理的亮度范围内,并且不会因为权重的比例不当导致整体过亮或过暗。

         例如某图像中某像素点的像素值如上图所示,那么在使用加权平均值进行灰度化时,其计算结果就是10*0.299+121*0.587+46*0.114=79。所以在灰度图中的对应位置上,该像素点的像素值就是79。

示例

 5.两个极端的灰度值

        在灰度图像中,“极端”的灰度值指的是亮度的两个极端:最暗和最亮的值。

  • 最暗的灰度值:0。这代表完全黑色,在灰度图像中没有任何亮度。

  • 最亮的灰度值:255。这代表完全白色,在灰度图像中具有最大亮度。

总结

        灰度图作为单通道图像,通过将彩色图的 R、G、B 三通道信息合并为单一通道实现,其像素值范围通常为 0-255(8 位存储),包含从黑到白的多级灰度,区别于仅含黑白两色的黑白图像。

三种灰度化方法各有特点:

  • 最大值法:取每个像素 R、G、B 三通道中的最大值作为灰度值,操作简单但可能导致图像偏亮;
  • 平均值法:计算三通道值的算术平均值作为灰度值,能均衡保留亮度信息,但未考虑人眼对不同颜色的敏感度差异;
  • 加权均值法:按 R=0.299、G=0.587、B=0.114 的权重计算加权和(权重和为 1),因贴合人眼对绿色更敏感、对蓝色较迟钝的特性,是应用最广泛的方法,能生成更符合视觉感知的灰度图。

        此外,文中还提及灰度图的两个极端值 ——0(最暗黑色)和 255(最亮白色),它们是灰度范围的边界,决定了图像的明暗对比上限。

        通过本文的实验与解析,可清晰理解不同灰度化方法的原理及适用场景,为后续图像处理(如特征提取、边缘检测)奠定基础。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Boot 项目启动自动执行逻辑的最佳实践:掌握 CommandLineRunner

前言 Spring Boot 启动阶段,总有些操作迫不及待冲在前线:配置要加载,数据要准备,日志要抢首发,仿佛个个争当“启动 MVP”。如果你也想让项目一启动就自动开工,少写点手动触发的“苦力逻辑”,那 CommandLineRunner 就是你的得力助手。它像那个永远第一个打卡的同事,不喝…

高可用集群KEEPALIVED的详细部署

一.高可用集群 1.1 集群类型 LB:Load Balance 负载均衡 LVS/HAProxy/nginx(http/upstream, stream/upstream) HA:High Availability 高可用集群 数据库、Redis SPoF: Single Point of Failure,解决单点故障 HPC&#x…

[论文阅读] 人工智能 + 软件工程 | NoCode-bench:评估LLM无代码功能添加能力的新基准

NoCode-bench:评估LLM无代码功能添加能力的新基准 论文:NoCode-bench: A Benchmark for Evaluating Natural Language-Driven Feature Addition 研究背景:当AI尝试给软件"加新功能",我们需要一张靠谱的"考卷"…

【Git知识】Git 常用知识集合之基础--分支系统与 Tag 标签机制

🧰 Git 常用知识集合Git 是程序员的“时间机器”。这份手册帮你从入门到精通,把 Git 玩明白。1️⃣ Git 基础操作流程 📌 三步走流程:添加 → 提交 → 推送 git add . # 把所有修改加入暂存区 git commit -m …

深入解析 Spark:关键问题与答案汇总

在大数据处理领域,Spark 凭借其高效的计算能力和丰富的功能,成为了众多开发者和企业的首选框架。然而,在使用 Spark 的过程中,我们会遇到各种各样的问题,从性能优化到算子使用等。本文将围绕 Spark 的一些核心问题进行…

Python-初学openCV——对openCV的简单使用

一、概述1、简单介绍OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,旨在为实时图像处理提供强大的功能。它由Intel开发,现由开源社区维护。OpenCV 提供了跨平台的解决方案,支持 Windows、Linu…

去中心化时代的通信革命:briefing与cpolar技术融合带来的安全范式革新

文章目录前言1.关于briefing2.本地部署briefing3.使用briefing4.cpolar内网穿透工具安装5.创建远程连接公网地址6.固定briefing公网地址前言 数字协作本该是提升效率的过程,却被这些数据管理问题不断困扰:平台条款中的监控声明、跨网络环境的接入障碍、…

GitHub新手生存指南:AI项目版本控制与协作实战

点击 “AladdinEdu,同学们用得起的【H卡】算力平台”,H卡级别算力,按量计费,灵活弹性,顶级配置,学生专属优惠。 代码仓库创建 分支管理 PR提交 开源项目复现 读者收获:掌握团队开发必备技能…

Axios封装以及添加拦截器

在前端开发中,http请求层的封装可以极大提升代码的复用性和可维护性,本文将完整的用axios封装接口请求,配置请求与响应拦截器,封装统一的请求方法全过程。封装的目的和思路在项目直接用axios发送请求当然没问题,但是如…

C语言中奇技淫巧04-仅对指定函数启用编译优化

相信很多人使用GCC编译代码时,都会接触到gcc -O0/1/2/3/s,知道它可以对工程进行全局优化。 事实上,除了全局优化外,使用GCC扩展方式,我们还可以仅对部分关键函数实施差异化编译优化。 在GCC编译器中,attrib…

HTML Style 对象深度解析:从基础到高级应用

一、Style 对象的核心概念定义与作用 Style 对象是 HTML DOM 中用于操作元素内联样式的接口,通过 element.style 访问。它允许动态修改元素的 CSS 属性,但仅能直接影响内联样式(即通过 style 属性直接写在标签中的样式)。与外部样…

【C++】定义常量

在 C 中&#xff0c;有两种简单的定义常量的方式&#xff1a; 使用 #define 预处理器。使用 const 关键字。 #define 预处理器 #include <iostream> using namespace std;#define LENGTH 10 #define WIDTH 5 #define NEWLINE \nint main() {int area; area LENGTH …

基于遗传算法的多无人车协同侦察与安全保护策略优化

基于遗传算法的多无人车协同侦察与安全保护策略优化 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff0c;觉得好请收藏。点击跳转到网站。 1. 引言 1.1 研究背景与意义 随着无人系统技术的快速发…

python面向对象编程详解

面向对象编程&#xff08;OOP&#xff09;是一种以对象为核心的编程范式。Python全面支持OOP&#xff0c;主要包含以下核心概念&#xff1a;一、类与对象1.类(Class)类是创建对象的模板或蓝图&#xff0c;它定义了对象的属性和方法。class Dog:# 类属性&#xff08;所有实例共享…

快速入门Socket编程——封装一套便捷的Socket编程——导论

快速入门Socket编程——封装一套便捷的Socket编程——导论 前言 ​ 这里是笔者打算做的Socket编程的第二部分&#xff0c;也就是核心的讨论我们Socket编程本身。 导论 ​ 我们知道&#xff0c;一个经典的服务器套接字的处理流程是如下的&#xff1a; 创建一个指定传输层和网络层…

【Mermaid 离线工具】Mermaid 流程图生成器 - 高清PNG输出,一键生成专业级流程图!

文章目录 Mermaid 流程图生成器(离线版本):高效绘图,离线也能玩转专业可视化 一、Mermaid:文本绘图的 “魔法语法” 二、离线版生成器:功能与优势解析 (一)离线可用,场景更灵活 (二)操作流程:简单五步,产出专业图表 (三)界面设计:简洁直观,降低使用门槛 三、应…

haproxy原理及实战部署

一、负载均衡 负载均衡是网络架构和分布式系统中至关重要的技术&#xff0c;其核心作用是将大量的并发请求或数据流量合理分配到多个服务器&#xff08;或其他资源节点&#xff09;上&#xff0c;从而解决单节点压力过大、资源利用率低、系统稳定性差等问题。 作用1. 提高系统吞…

jwt 在net9.0中做身份认证

一、新建net9.0项目WebApplication1&#xff0c;安装包 <ItemGroup><PackageReference Include"Microsoft.AspNetCore.Authentication.JwtBearer" Version"9.0.7" /><PackageReference Include"Swashbuckle.AspNetCore" Version&…

【机器学习深度学习】微调能改变模型“智商”吗?——模型能力与知识的本质解析

目录 前言 一、模型的“知识”与“能力”&#xff1a;两种不同的智能 第一种&#xff1a;浅层知识&#xff08;记忆 模式识别&#xff09; 第二种&#xff1a;深层能力&#xff08;推理 理解&#xff09; 二、微调&#xff1a;改变的是“经历”&#xff0c;不是“天赋”…

oracle数据库表空间碎片整理

oracle数据库表空间碎片整理 表空间碎片情况检查 表空间碎片问题处理 收缩表 表空间手动整理 exp/imp导出再导入 移动表到新的表空间 表空间碎片情况检查 对比表实际使用空间和数据文件占用空间: --实际数据占用空间 select tablespace_name,round(sum(bytes/1024/1024/1024…