基于matlab的图像灰度化与图像反白

1原理

2.1 图像灰度化原理

图像灰度化是将彩色图像转换为灰度图像的过程,使得每个像素点仅包含一个灰度值,从而简化了图像的复杂度。灰度化原理主要可以分为以下几种方法:

  1. 亮度平均法
    • 原理:将图像中每个像素的RGB值的平均值作为该像素的灰度值。
    • 公式:灰度值 = (R + G + B) / 3
    • 优点:简单易懂,计算速度快。
    • 缺点:没有考虑到每个颜色通道的重要性,可能会对图像的质量造成影响。
  2. 加权平均法
    • 原理:根据每个颜色通道所表达的亮度值来计算灰度值。由于人眼对于绿色通道的亮度最为敏感,因此绿色通道的权重最高,而红色和蓝色通道的权重相对较低。
    • 公式:灰度值 = 0.299R + 0.587G + 0.114B
    • 优点:考虑了颜色通道的重要性,可以提高图像的质量。
  3. 最大值法
    • 原理:将每个颜色通道中的最大值作为该像素的灰度值。
    • 优点:由于对比度较强,能够突出图像中的主要内容,因此常用于图像边缘检测中。
    • 缺点:可能会损失一些图像细节。
  4. Gamma校正灰度化
    • 原理:由于RGB值与功率并非简单的线性关系,而是幂函数关系,这个函数的指数称为Gamma值,一般为2.2。因此,在灰度化时需要进行Gamma校正。
    • 公式:

Gray = (\sqrt[2.2]{\frac{R^{2.2}+(1.5G)^{2.2}+(0.6B)^{2.2}}{1+1.5^{2.2}+0.6^{2.2}}})

2.2 图像反白原理

图像反白是将图像的暗色区域变为亮色,亮色区域变为暗色的过程。这通常用于增强图像的对比度,使图像更加清晰。

  1. 基本原理:对于彩色图像的R、G、B各彩色分量取反,得到反色后的图像。
  2. 公式:对于像素点(x, y)的RGB值(R, G, B),反白后的RGB值为(255-R, 255-G, 255-B)。这里假设图像是8位无符号整数类型,即RGB值的取值范围是[0, 255]。

通过图像灰度化和反白处理,可以方便地对图像进行后续的分析和处理。

2 代码

%% 图像预处理-灰度化与图像反白
I1 = imread('test.jpeg');  
figure;
subplot(2,2,1);%用subplot建立多个子图
imshow(I1);%用imshow显示图像I
title('原始彩色图像');  
J=rgb2gray(I1);%将彩色图像工转换为灰度图像J
subplot(2,2,2);imshow(J);% 用imshow显示图像J
title('灰度图像');  
subplot(2,2,3);imhist(J);% 计算和显示灰度图像J的灰度直方图
title('灰度直方图');  
Ave = mean2(J);%用mean2函数求图像J的均值
SD = std2(double(J));%用std2函数求图像J的均值
s= size(J);%图像大小为s(1)×s(2)
all_white = 255*ones(s(1),s(2));%设置全部为白色灰度255
all_white_uint8=uint8(all_white);%将double类型矩阵转化为uint8类型矩阵
K= imsubtract(all_white_uint8,J);%图像相减得反白图像K
subplot(2,2,4);imshow(K);%用imshow显示图像K
title('反白图像');  

3 运行结果

图1 运行结果

        有一说一,反白图像这张图是不是挺有感觉的,嘿嘿。

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

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

相关文章

[深度学习] 生成对抗网络GAN

生成对抗网络(Generative Adversarial Networks,GANs)是一种由 Ian Goodfellow 等人在2014年提出的深度学习模型Generative Adversarial Networks。GANs的基本思想是通过两个神经网络(生成器和判别器)的对抗过程&#…

VMware vCenter Server 8.0U3 发布下载 - 集中式管理 vSphere 环境

VMware vCenter Server 8.0U3 发布下载 - 集中式管理 vSphere 环境 Server Management Software | vCenter 请访问原文链接:https://sysin.org/blog/vmware-vcenter-8-u3/,查看最新版。原创作品,转载请保留出处。 作者主页:sys…

如何解决ssh远程连接自动断开的问题

文章目录 1. 问题描述2. 配置SSH设置2.1 调整服务器端的设置2.2 调整客户端的设置 3. 调整用户断开时长 1. 问题描述 SSH 远程连接断开是一个常见的问题,尤其是在网络不稳定或长时间没有活动时。文本介绍一些常见的方法和技巧来保持 SSH 连接稳定和避免断开。 2. …

基于Python/MNE处理fnirs数据

功能性近红外光谱技术在脑科学领域被广泛应用,市面上也已经有了许多基于MATLAB的优秀工具包及相关教程,如:homer、nirs_spm等。而本次教程将基于Python的MNE库对fNIRS数据进行处理。 本次教程基于:https://mne.tools/stable/auto_…

自动驾驶系统功能安全解决方案解析

电信、公用事业、运输和国防等关键基础设施服务需要定位、导航和授时(PNT)技术来运行。但是,广泛采用定位系统(GPS)作为PNT信息的主要会引入漏洞。 在为关键基础设施制定PNT解决方案时,运营商必须做出两个…

运维入门技术——监控的三个维度(非常详细)零基础收藏这一篇就够了_监控维度怎么区分

一个好的监控系统最后要做到的形态:实现Metrics、Tracing、Logging的融合。监控的三个维度也就是Metrics、Tracing、Logging。 Metrics Metrics也就是我们常说的指标。 首先它的典型特征就是可聚合(aggregatable).什么是可聚合的呢,简单讲可聚合就是一种基本单位可以在一种维…

uniapp标题水平对齐微信小程序胶囊按钮及适配

uniapp标题水平对齐微信小程序胶囊按钮及适配 状态栏高度胶囊按钮的信息计算顶部边距模板样式 标签加样式加动态计算实现效果 状态栏高度 获取系统信息里的状态栏高度 const statusBarHeight uni.getSystemInfoSync().statusBarHeight;//系统信息里的状态栏高度胶囊按钮的…

钢筋计在工程项目中的关键应用与优势

在长期工程项目中,如大型桥梁、高层建筑或深基坑工程中,钢筋是承载结构的重要组成部分。为确保工程质量和安全,监测与管理钢筋的状态至关重要。钢筋计作为一种先进的监测工具,在长期工程项目中发挥着不可替代的作用。 1. 钢筋计的…

Spring Boot 学习第八天:AOP代理机制对性能的影响

1 概述 在讨论动态代理机制时,一个不可避免的话题是性能。无论采用JDK动态代理还是CGLIB动态代理,本质上都是在原有目标对象上进行了封装和转换,这个过程需要消耗资源和性能。而JDK和CGLIB动态代理的内部实现过程本身也存在很大差异。下面将讨…

VMware Workstation搭建Windows Server2019主备AD域控详细操作步骤

版本 虚拟机版本 VMware Workstation 16 Prp 16.2.5 build-20904516 服务器系统版本 具体操作 安装第一台虚拟机服务器 首先先创建一台Windows Server2019虚拟机,可以参考VMware Workstation安装Windows Server2019系统详细操作步骤-CSDN博客 克隆第一台虚拟机…

创建npm私包

参考文章: 使用双重身份验证访问 npm | npm 中文网 私有npm包的实例详解-js教程-PHP中文网 1.注册npm账号 npm官网: npm | Home 2.安装node 百度挺多的,安装完后,检查是否安装成功就行 3.写一个简单的模块 创建个文件夹&am…

echarts 折线图柱状图增加点击事件

单折线图,可以直接监听click事件(只有点击到折线才会触发) this.chart.on(click, () > {console.log(点击,.s)})但很多时候,我们是要求点击折线图任意位置触发点击事件 而且要注意隐藏折线的操作按钮 this.chart.getZr().on…

MySQL之复制(十一)

复制 复制的问题和解决方案 数据损坏或丢失的错误 当一个二进制日志损坏时,能恢复多少数据取决于损坏的类型,有几种比较常见的类型: 1.数据改变,但事件仍是有效的SQL 不幸的是,MySQL甚至无法察觉这种损坏。因此最好还是经常检查…

Java核心知识(一):JVM

JVM 前言 文本源自微博客 (www.microblog.store),且已获授权. 一、线程 1.1 基本概念 JVM是可运行java代码的假象计算机,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收、堆和一个存储方法域。JVM是运行在操作系统之上的,与硬件没有直接的交互。 1.2 运…

Stateflow快速入门系列(二):通过使用状态和转移动作来定义图行为

状态动作和转移动作是您分别在状态内部或转移上编写的指令,用于定义 Stateflow 图在仿真期间的行为。例如,下图中的动作定义了一个以试验方式验证 Collatz 猜想实例的状态机。对于给定的数值输入 ,该图通过迭代以下规则来计算冰雹序列 &…

Android10 Settings系列(六)Settings中toolbar 的基本流程,和Activity如何关联,这可能是比较详细的分析

一、前言 写在前面:一个快捷栏,音量浮窗快捷进入设置界面,点击左上角返回键拉起设置首页问题引发的思考和解决方法 事情的起因是测试报了一个问题。在Android9的一个设备在点击音量键时,在弹出的弹框中,点击设置图标快速进入音量设置中,点击左上角返回按钮是,退出当前界…

ChatGPT 桌面客户端正式发布

适用于 macOS 的 ChatGPT 客户端现已可供所有用户下载使用[1]。 使用 Option Space 快捷键可以即可访问 ChatGPT,可以对话电子邮件,选中文字、图片、和屏幕上的任何内容!

【安全审核】音视频审核开通以及计费相关

融云控制台音视频审核入口:音视频审核 1 音视频审核文档:融云开发者文档 1 提示: 开发环境: 免费体验 7 天(含 21 万分钟音频流和 420 万张视频审核用量),免费额度用尽后,将关停服务…

FineReport聚合报表与操作

一、报表类型 模板设计是 FineReport 学习过程中的主要难题所在,FineReport 模板设计主要包括普通报表、聚合报表、决策报表三种设计类型。 报表类型简介- FineReport帮助文档 - 全面的报表使用教程和学习资料 二、聚合报表 2-1 介绍 聚合报表指一个报表中包含多个…

运行ChatGLM大模型时,遇到的各种报错信息及解决方法

①IMPORTANT: You are using gradio version 3.49.0, however version 4.29.0 is available, please upgrade 原因分析: 因为使用的gradio版本过高,使用较低版本。 pip install gradio3.49.0 会有提示IMPORTANT: You are using gradio version 3.49.…