图像处理学习笔记(一)

news2024/12/26 21:47:50

目录

  • 图像处理学习笔记(一)
      • 一、基础知识
        • 1、彩色图像
          • (1)RGB
          • (2)HSV
          • (3)HSI
          • (4)CMYK
          • (5)YUV
          • (6)YCbCr
        • 2、灰度图像
        • 3、二值图像
      • 二、图像灰度化
        • 1、最大值
        • 2、平均值
        • 3、加权平均值
        • 4、直接调用灰度处理的方法

图像处理学习笔记(一)

一、基础知识

1、彩色图像

(1)RGB

RGB色彩模式是工业界的一种颜色标准,通过对红R、绿G、蓝B三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是运用最广的颜色系统之一。
图像中每个像素都分成R、G、B三个基色分量,每个颜色分量都有对应灰度值[0,255],每个颜色分量可以用8位表示(还有10位表示的),若位深为8则RGB图像能构造出2的24次方种色彩,即24位色。RGB包含RGB555、RGB565、RGB24、RGB32等格式。图片大小(bit)=宽像素×高像素×位深×3。

注:文中图片源于网络。

(2)HSV

HSV是根据颜色的直观特性创建的一种颜色空间,也称六角锥体模型。H色相表示色彩信息,取值为0-360°,如按红色逆时针计算,红色0°、绿色120°、蓝色240°;S饱和度,取值为0.0-1.0;V色明度,取值为0.0(黑色)-1.0(白色),V=max(R,G,B)。
在这里插入图片描述

(3)HSI

HSI颜色模型同样是从人的视觉系统出发。H定义颜色的频率,称为色调;S表示颜色的深浅程度,称为饱和度;I表示强度或亮度,I=(R+G+B)/3。
注:饱和度是一种描述颜色纯净度的属性,单一颜色光的饱和度最高,掺入白光越多饱和度越低。饱和度=单色光强度/(单色光强度+白光强度)。
在这里插入图片描述

(4)CMYK

CMYK颜色模型是一种应用相减原理的色彩系统,它的颜色来源于反射光线。当所有的颜色叠加在一起时会产生黑色,当没有任何颜色加入的时候为白色。CMYK颜色模型包括青(cyan)、品红(magenta)、黄(yellow)和黑(black),为避免与blue混淆,黑色用K表示。彩色打印机和彩色印刷都是采用这个原理。CMY是色料三原色,利用油墨对光的吸收、透射和反射,产生不同的颜色。
在这里插入图片描述

(5)YUV

YUV是一种颜色编码方法,常使用在各个视频处理组件中。YUV在对照片或视频编码时,考虑到人类的感知能力,允许降低色度的带宽。Y表示明亮度,也就是灰阶值,U和V表示的色度,描述影像色彩及饱和度,用于指定像素的颜色。与RGB模型相比,YUV模型最大的优点在于信号传输时只需占用极少的频宽。当白光的亮度用Y来表示时,它和红、绿、蓝三色光的关系可用下式描述:Y=0. 299R+0. 587G+0. 114B,这就是常用的亮度公式。

(6)YCbCr

YCbCr是在世界数字组织视频标准研制过程中作为ITU - R BT.601 建议的一部分,其实是YUV经过缩放和偏移的翻版。其中Y与YUV 中的Y含义一致,Cb、Cr 同样都指色彩,只是在表示方法上和U、V不同。在YUV家族中,YCbCr是在计算机系统中应用最多的成员,其应用领域很广泛,JPEG、MPEG均采用此格式。Y指亮度分量,Cb指蓝色色度分量,Cr指红色色度分量。
注:还有其他彩色图像模型,如YIQ、Lab等,此处不做概述。

2、灰度图像

灰度图像每个像素只需一个字节存放灰度值(又称强度值、亮度值)。灰度范围为0-255,当灰度为255的时候,表示最亮(纯白);当灰度为0的时候,表示最暗(纯黑)。灰度化的好处是:相较于彩色图像灰度图像占内存更小,运行速度更快;灰度图像后可以在视觉上增加对比,突出目标区域。

3、二值图像

二值图像就是将像素点的灰度值设置为0或255,整个图像呈现出明显的只有黑和白的视觉效果。可以用来描述字符图像,其优点是占用空间少,缺点是当表示人物、风景图像时,二值图像只能展示其边缘信息,图像内部的纹理特征表现不明显。一般应用在车牌识别、图像的字符提取等。

二、图像灰度化

Python将彩色图像转换为灰度图像有多种方式,如使用用Pillow库函数、OpenCV库函数、matplotlib等,大致有下述三种方法:取最大值、平均值、加权平均值。

1、最大值

取R、G、B三个分量中最大的分量值,R=G=B=max(R,G,B)。

import cv2
import numpy as np
from matplotlib import pyplot as plt

def Max_Gray(img_path):
    img = cv2.imread(img_path)
    # 获取图像尺寸
    h, w = img.shape[0:2]
    # 自定义空白单通道图像存放灰度图
    gray = np.zeros((h, w), dtype=img.dtype)
    # 对原图像进行遍历,然后灰度化
    for i in range(h):
        for j in range(w):
            # 求最大值作为灰度值
            gray[i, j] = max(img[i, j, 0], img[i, j, 1], img[i, j, 2])
    gray = cv2.cvtColor(gray, cv2.COLOR_BGR2RGB)
    plt.imshow(gray)
    plt.title('Max_Gray')
    plt.show()

img_path = r'B10.bmp'
Max_Gray(img_path)

2、平均值

取R、G、B三个分量的平均值,R=G=B=(R+G+B)/3。

import cv2
import numpy as np
from matplotlib import pyplot as plt

def Avg_Gray(img_path):
    # 接口读取图像,opencv中读取到的是BGR图像
    img = cv2.imread(img_path)
    # 获取图像尺寸
    h, w = img.shape[0:2]
    # 自定义空白单通道图像存放灰度图
    gray = np.zeros((h, w), dtype=img.dtype)
    # 对原图像进行遍历,然后灰度化
    for i in range(h):
        for j in range(w):
            # 求平均值作为灰度值
            gray[i, j] = (int(img[i, j, 0])+int(img[i, j, 1])+int(img[i, j, 2]))/3
    # 读取的BGR转换为RGB
    gray = cv2.cvtColor(gray, cv2.COLOR_BGR2RGB)
    plt.imshow(gray)
    plt.title('Avg_Gray')
    plt.show()

img_path = r'B10.bmp'
Avg_Gray(img_path)

3、加权平均值

取R、G、B三个分量的加权平均值,因为人眼对颜色敏感度不同,所以三个分量加不同的权值,0.299×R+0.587×G+0.114×B。

import cv2
import numpy as np
from matplotlib import pyplot as plt

def WeiAvg_Gray(Img_path):
    img = cv2.imread(Img_path)
    # 获取图像尺寸
    h, w = img.shape[0:2]
    # 自定义空白单通道图像存放灰度图
    gray = np.zeros((h, w), dtype=img.dtype)
    # 对原图像进行遍历,然后灰度化
    for i in range(h):
        for j in range(w):
            gray[i, j] = 0.114*int(img[i, j, 0])+0.587*int(img[i, j, 1])+0.299*int(img[i, j, 2])
    gray = cv2.cvtColor(gray, cv2.COLOR_BGR2RGB)
    plt.imshow(gray)
    plt.title('WeiAvg_Gray')
    plt.show()

img_path = r'B10.bmp'
WeiAvg_Gray(img_path)

注:最大值转换的灰度图亮度最高,平均值转换的灰度图像较暗,加权平均值转化的灰度图像明暗介于两者之间。
在这里插入图片描述

4、直接调用灰度处理的方法

import cv2
from matplotlib import pyplot as plt

img = cv2.imread('B1.bmp')
img1 = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.subplot(121)
plt.imshow(img1)
plt.title('Src_img')

# 灰度转换
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
plt.subplot(122)
plt.imshow(gray, plt.cm.gray)
plt.title('Gray_img')
plt.show()

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

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

相关文章

谋合作、创新境 | 百度参观图为科技生产全链路

当代科技的发展不断催生出新的变革和机遇,百度作为全球顶尖的高科技公司,凭借其强大的创新基因,一直处于人工智能领域的最前沿。   近日,百度公司派出了一支专业团队来到了图为科技,对图为的研发技术及生产线进行了全…

python 把txt文本的log日志倒序处理

在上述代码中,我们尝试了一系列常见的编码(utf-8、gbk、latin-1)来打开文件,直到找到一个能够成功解码文件内容的编码。 如果找到了匹配的编码,就使用该编码读取文件内容。如果仍然出现解码错误,你可能需要…

虚幻Voxel插件

虚幻Voxel插件 Voxel Plugin Voxel Plugin brings smoothed voxel terrain to Unreal Engine 4. Generate, destroy and terraform the world! 体素插件可以在虚幻引擎中生成平滑的体素地形。创造、破环和改造世界。 Terrain generation and terraforming both in game and i…

CANOE 操作详情

canoe 手把手教你如何操作canoe工具: 1:创建test文件夹, 并在文件夹下创建3 文件夹 2:创建canoe工程,选择500波特率 3: 双击后进入 4:创建DBC文件 5 创建网络节点: 两个节点创建好之后&#x…

mpVue 微信小程序基于vant-weapp 组件的二次封装TForm 表单组件(适配移动端)——新增仓库地址

一、前言 1、mpVue微信小程序不支持动态组件&#xff08;<component> &#xff09; 2、mpVue微信小程序不支持动态属性及事件穿透&#xff08;$attrs和$listeners&#xff09; 3、mpVue微信小程序不支持render函数 二、最终效果 三、配置参数&#xff08;Attributes&…

OpenCV for Python 入坑第一天:图像的基础操作

我们都知道&#xff0c;OpenCV能够帮助我们处理视频和图像&#xff0c;咱们在图像处理中&#xff0c;除了Pillow库之外&#xff0c;最经常用到的也是它了。那么现在咱们就正式入坑OpenCV for Python&#xff0c;一起来感受一下OpenCV的魅力吧&#xff01; 文章目录 读取图像 im…

深入了解Redis-基础篇

文章目录 一、故事背景二、知识点主要构成2.1、redis简介2.2、基于CentOS Linux docker容器化安装redis2.3、redis的数据类型2.3.1、String类型2.3.2、Hash类型2.3.3、List类型2.3.4、Set类型2.3.5、SortedSet类型 2.4、Redis的Java客户端2.4.1、Jedis2.4.1.1、Jedis的使用步骤…

leetcode 572. 另一棵树的子树(java)

另一棵树的子树 另一棵树的子树题目描述解法一 DFS解法二 KMP 算法 KMP 算法 另一棵树的子树 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode.cn/problems/subtree-of-another-tree 题目描述 给你两棵二叉树 root 和 subRoot 。检验 …

脑电微状态方法可靠吗?

摘要 EEG微状态是在静息态EEG记录中观察到的代表功能性脑网络的状态&#xff0c;在快速切换到另一个网络之前保持稳定40-120ms。人们认为微状态特征(如持续时间、发生率、覆盖率和转换概率)可以作为精神和神经系统疾病以及心理社会特征的神经标志物。然而&#xff0c;需要可靠…

设计模式-01策略模式

1 什么是设计模式 先看一段设计模式总结之父们GOF在《设计模式 可复用面向对象软件的基础》一书中描述的一段话&#xff1a; 设计模式就是程序编码设计时的一些套路&#xff0c;这些套路都是经过前人千锤百炼总结出来的经验&#xff0c;由GoF总结出23种经典套路&#xff0c;即…

4028: 按位与

题目内容 输入格式 输入第一行一个整数 n n n。 第二行 n n n 个整数 a 1 , a 2 , ⋯ , a n a_1, a_2, \cdots, a_n a1​,a2​,⋯,an​。 输出格式 输出一行一个整数表示答案。 样例 1 输入 5 6 2 3 4 7 样例 1 输出 7 #include<bits/stdc.h> using namespace std…

怎样优雅地增删查改(三):业务用户的增删查改

文章目录 创建业务用户创建业务用户同步器创建业务用户应用服务增删改查 创建控制器测试按组织架构查询按职称查询 创建业务用户 区别于身份管理模块&#xff08;Identity模块&#xff09;的鉴权用户IdentityUser&#xff0c;业务用户&#xff08;BusinessUser&#xff09;是围…

【Python】正则表达式语法入门

目录 正则表达式 1、点&#xff1a;匹配所有字符 2、星号&#xff1a;重复匹配任意次 3、加号&#xff1a;重复匹配多次 4、花括号&#xff1a;匹配指定次数 5、贪婪模式和非贪婪模式 6、反斜杠&#xff1a;对元字符的转义 7、方括号&#xff1a;匹配几个字符之一 8、…

计算机科学与技术基础课程复习

文章目录 大学计算机基础 大学计算机基础 国防科技大学慕课 从算牌开始&#xff0c;记录数据 数据的计算规则 帕斯卡的加法器 计算自动化 图灵的梦想 乘10运算的图灵机 图灵记 根据状态和记录&#xff1b;根据控制器规则&#xff0c;从起始状态到结束状态&#xff0c;从…

less 笔记

1 margin-left 之后有 margin: 0 导致margin-left 无效 --> 不能重复定义 .btn-group {margin-left: calc(100% - 350px);display: inline-block;margin: 0; // 重复定义 导致上面 没有效果padding: 0; } 2 一定要F12检查元素 看各个div的宽度是否太长 导致靠左靠右 计算不…

5.1 Python高阶特性之递归函数

基本概念&#xff1a; 如果一个函数在内部调用自身本身&#xff0c;这个函数就是递归函数使用递归函数的优点是逻辑简单清晰&#xff0c;缺点是递归过深会导致栈溢出。【注意】 递归函数定义时&#xff0c; 一定存在某个条件能结束执行&#xff0c; 递归最重要的就是需要避免死…

免费使用Elasticsearch官网15天

注册登录 点击创建索引时候会给你展示一个密钥。这个密钥就是你的用户密码 如下图 你的服务地址大致样式如下 https://huihai.es.us-central1.gcp.cloud.es.io 这里需要你输入用户密码,上面图4&#xff08;图中&#xff09;&#xff0c;下载时候的用户密码 登录完成 这样就能…

【Python爬虫】CSDN热榜文章热门词汇分析

&#x1f4da; 前言 在信息时代&#xff0c;我们经常需要从大量的文章中获取有用的信息。本文将介绍如何使用Python进行数据处理&#xff0c;获取热榜文章的标题和标签&#xff0c;并使用jieba库进行数据分析。通过本文的学习&#xff0c;你将掌握获取和分析热榜文章数据的技巧…

[英语单词] components;

*[kәm’pәunәnt] n. 元件, 组件, 成分 a. 组成的, 构成的 【计】 组件 【化】 组分 【医】 成分; 组元(神经元组) 有很多地方使用这个单词&#xff0c;在组成整体时&#xff0c;作为单位一内的占有比率。那为什么不用portion&#xff1f; 这样每一个组成部分都是一个compon…

使用 YOLOv8 和 Streamlit 构建实时对象检测和跟踪应用程序:第 1 部分-介绍和设置

示例:图像上的对象检测 介绍 实时视频中的目标检测和跟踪是计算机视觉的一个重要领域,在监控、汽车和机器人等各个领域都有广泛的应用。 由于需要能够识别和跟踪对象、确定其位置并对它们进行实时分类的自动化系统,对视频帧中的实时对象检测和跟踪的需求日益增加。 在这…