图像灰度化的三种常见方法

article/2025/8/27 6:16:25

ⅠWhat

首先是baike给出的官方灰度化定义:

灰度化,在RGB模型中,如果R=G=B时,则彩色表示一种灰度颜色,其中R=G=B的值叫灰度值,因此,灰度图像每个像素只需一个字节存放灰度值(又称强度值、亮度值),灰度范围为0-255。

简单理解的话,就是把彩色的图像转化为黑白(亮度)图像。

当灰度为255的时候,表示最亮(纯白);当灰度为0的时候,表示最暗(纯黑)。

灰度化有什么好处呢?

灰度化是图像处理的根基,下层基础决定上层建筑,因此学习灰度化是有关图像的一切研究之开端。

Ⅱ How

彩色图像转化为灰度图像共有三种常用的方法:
63a1f5c02c71751bf24c4f15eaea8492.png

第一种,直接取R, B, G三个分量中数值最大的分量的数值。(0视为最小,255视为最大)。

第二种,取R, B, G三个分量中数值的均值

第三种,根据人眼对于R, B, G三种颜色的敏感度,按照一定的权值进行加权平均得到。

可以发现人眼对绿色最为敏感,因此其系数最高。

matlab代码实现:

%%三种方法实现灰度化与调用MATLAB函数实现灰度化
clear all;
clc
Img = imread('mj.jpg');
[n m a] = size(Img);%判断图像的大小 a为三色 R, G, BGrayImage= rgb2gray(Img);%调用MATLAB函数实现灰度化
Img_Gray = zeros(n, m);
for x = 1 : n  %通过双循环对图像进行灰度化处理for y = 1 : mImg_Gray_1(x, y) = max(Img(x, y, 1),max(Img(x, y, 2),Img(x, y, 3)));  %最大值法Img_Gray_2(x, y) = (uint16(Img(x, y, 1)) + uint16(Img(x, y, 2)) + uint16(Img(x, y, 3)))/3;%平均值法Img_Gray_3(x, y) = 0.3 * Img(x, y, 1) + 0.59 * Img(x, y, 2) + 0.11 * Img(x, y, 3);%加权平均法end
end
figure(1);
subplot(1, 3, 1);
imshow(Img);
title('原图');
subplot(1, 3, 2);
imshow(GrayImage);
title('调用系统函数实现灰度化');
subplot(1, 3, 3);
imshow(uint8(Img_Gray_3));
title('加权平均方法');
figure(2);
subplot(1, 3, 1);
imshow(Img_Gray_1);
title('最大值法');
subplot(1, 3, 2);
imshow(uint8(Img_Gray_2));
title('平均值法');
subplot(1, 3, 3);
imshow(uint8(Img_Gray_1));
title('加权平均法');

结果:

 

可以发现

1)最大值法转换的灰度图亮度很高。

2)平均值法产生的灰度图像比较柔和(暗淡, 暗处更暗)。

3)加权平均法得到的灰度图像效果最好(maybe..)。

Ⅲ Why 

图像进行灰度化处理后,可以进行进一步的特征提取操作。Phash(感知哈希算法)就是一个简单的例子,下一篇将给大家讲述一下Phash的实现原理和主要思想。


http://chatgpt.dhexx.cn/article/RylZFhsO.shtml

相关文章

图像基本处理(灰度化)

项目场景: 今天我们开始最基础的图像处理,将一张图片进行灰度化处理。我们将使用OpenCV来进行图像的处理 基础知识 图片主要包含以下内容: 1.像素,也就是我们通常说的RGB模型,红、绿、蓝组成。 RGB颜色模型是三维直角…

图像灰度化处理

文章目录 1. 图像灰度化2. 图像灰度化处理方法2.1 最大值法2.2 平均值法2.3 加权平均法 3. 图像灰度化处理方法的Python实现3.1 最大值法3.2 平均值法3.3 加权平均法3.4 最大值法、平均值法和加权平均法的比较3.5 opencv-python中灰度处理方法的应用 4. 源码仓库地址 1. 图像灰…

excel转换linux时间戳,在Excel中转换时间戳(timeStamp)

TEXT((A2/10008*3600)/8640070*36519,"yyyy-mm-dd hh:mm:ss.000") ((B2-70*365-19)*86400-8*3600)*1000 什么是时间戳? Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式。 定义为从…

java linux 时间戳转时间_Java时间和时间戳的相互转换

Java时间和时间戳的相互转换 时间转换为时间戳: /* * 将时间转换为时间戳 */ public static String dateToStamp(String s) throws ParseException{ String res; SimpleDateFormat simpleDateFormat new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date …

linux时间转excel,linux时间戳转换【操作模式】

虽然电脑已经很普遍了,但是一些年长的人对电脑的操作不是很熟悉,比如在使用win7系统时一旦遇到linux时间戳转换 时就懵了,对于linux时间戳转换 处理起来相对来说较简单,按照我们的步骤处理linux时间戳转换 很容易上手,…

excel linux时间戳转换成日期,Excel将Unix时间戳转换为日期

Excel默认不支持Unix格式时间戳,这在导入数据时十分不便。可以用以下公式将时间戳转换成Excel格式的时间:(A18*3600)/8640070*36519 其中A1为时间戳的单元格,8*3600中的8为中国的时区。然后将公式单元格设置为日期时间格式即可。转换结果如下…

Linux C/C++实现时间戳转换工具

在大多数 UNIX 系统中,当前时间存储为自特定时刻以来经过的时间以简化,将时间保持为长整数。所有 UNIX 系统普遍接受的时刻是 1970 年 1 月 1 日凌晨 12:00:00。 这称为 UNIX 时间戳,并被所有现代 UNIX/Linux 系统识别。 Linux 时间戳date命…

linux系统date命令(时间戳与日期相互转换)

引言 在做数据分析时经常会用到时间,但有时系统或应用时间显示的格式不统一,这就需要将格式转换为一致,才能对比数据进一步做分析,以前常用网上在线时间戳转换工具,但每次都在先打开浏览器进行搜索在线时间戳转换工具…

Linux下时间戳格式和标准时间格式的转换

大家都知道linux文件系统中的每个文件都有三种时间戳: 访问时间(atime——access time):就是上次访问这个文件的时间。 改变时间(ctime——change time):就是文件的inode改变的时间(…

Python——保存图片到本地

举个例子,比如我想保存github网,浏览器头有个图标. resp requests.get("https://github.com/favicon.ico") with open("C:\\Python37\\911.jpg",wb)as jpg: jpg.write(r.content)

python读取、保存图片的方法

matplotlib 输入:列表或二维矩阵 (1)例如列表: #codingutf-8 from matplotlib import pyplot as plt X [[1,2],[3,4],[5,6]] plt.imshow(X) #AxesImage(80,52.8;496x369.6) plt.colorbar() plt.show() #导入AxesImage结果…

python爬取网页图片教程之python爬虫获取图片保存图片

怎么用python爬取网页图片,今天我们以一个实例网页()来爬取页面中的所有图片。 1.获取图片的URL ** ** 首先我们要想获取图片的URL,就需要将该网页中的图片URL提取你,那么我们首先获取该网页的整个数据 然后我们通过…

python爬虫保存图片和文件

看了一篇博客,是这么保存图片的: 照做: src "https://i0.hdslb.com/bfs/sycp/creative_img/201912/01b2f081d58e49c708c1d32b7b8c20ed.jpg" r requests.get(src) with open("C://Users//yg//Desktop//bbb.jpg", "…

在Python中如何保存图像

在Python中如何保存图像,如何将数组保存为图像 主要是看了TensorFlow中第一部分中看到的,查了查资料总结下如何将数组保存为图像 原程序如下 import scipy.misc import os #from PIL import Image #把原始图片保存至MNIST_data/raw/下 save_dir"M…

Python获取图片保存对应的文件夹

首先创建的文件夹,先定义一个创建文件夹的函数: def makdir(path):try:isExists os.path.exists(path)#判断是否存在文件夹if not isExists:#不存在创建os.makedirs(path)print(path文件夹创建成功!)else:print(path文件夹已存在&#xff0…

【python学习】如何将所绘制的图(单张多张)保存到文件夹,并用绘制实时时间命名图片

python图片保存到文件夹 基本存储(plt.savefig())创建文件夹并存储图片(if结构OS模块)批量绘制图片批量存储(for循环)图片/文件夹命名与所运行时间关联(datatime模块) 最近一直在做…

python读取图片、保存图片的方法

转自:https://jingyan.baidu.com/article/1876c852572d2f890b137609.html 分步阅读 本文介绍一下,python读取图片、保存图片的方法。 工具/原料 电脑 python3.6(anaconda) matplotlib模块 opencv模块 pillow模块 photomos…

python读取和保存图片的三种方法

python读取和保存图片 opencv import cv2 #load img cv2.imread(0.png) #show cv.imshow(title, img) #save cv2.imwrite(1_cv2.png,img)可以看到opencv读取的图片数据类型是uint8格式(属于numpy),uint8是专门用于存储各种图像的&#xff…

python读取与保存图片的exif信息

图片的exif文件格式中保存了很多信息,比如GPS经纬度,高度,焦距等信息。 在图片的属性中可以看到这些信息: 我们可以使用python来进行exif数据的读取和保存。 1. 首先安装piexif pip3 install piexif 2.exif数据读取代码 impo…

Python 保存图片的两种方法

有时我们需要保存我们的图片,那我们可以怎么保存呢? 可参考下列保存的两种方法: 第一种:cv2.imwrite() 示例: # 方法一 : import cv2 cv2.imwrite("imwrite_pic.jpg", cv2.imread(pic.jpg)) 第二种:i…