【视觉入门】——图形处理基础知识、BMP图像文件介绍、空域图像增强(点运算部分)——图像间变换、灰度变换、直方图变换

2023-05-16

目录

  • 图像处理基础知识
    • 数字图像的表示
    • 数字图像的空间分辨率即灰度级分辨率
    • 像素间的基本关系
      • 相邻像素
      • 邻接性与连通性
      • 像素间的距离
    • 数字图像文件格式
      • BMP图像文件格式
      • 调色板的概念
      • BMP图像文件的注意事项
  • 空域图像增强
    • 图像间的运算
      • 图像的加法:
      • 图像间的减法
      • 逻辑运算
      • 灰度变换
    • 灰度直方图变换
      • 直方图均衡化
      • 直方图规定化

图像处理基础知识

数字图像的表示

在这里插入图片描述
f(x,y)——灰度级值,又称灰度矩阵,取值范围为[0,L-1]其中,L=2k。则相应的,k=1时,就是所谓的二值图像

数字图像的空间分辨率即灰度级分辨率

定义:空间分辨率 :图像中可辨别的最小细节
定义:灰度级分辨率 :在灰度级别中可辨别的最小变化

像素间的基本关系

相邻像素

  • 4邻域——N4( P)在这里插入图片描述
  • 对角邻域——ND( P) : (x+1, y+1)、(x+1, y-1)、(x-1, y+1)、(x-1, y-1)
  • 8邻域——N8( P)在这里插入图片描述
  • N8( P) = N4( P) + ND( P)

邻接性与连通性

  • 邻接性(Adjacency):两个像素是否相邻以及它们的灰度值是否满足特定的相似性准则
  • 令V为定义邻接性的灰度值集合,()例如,在具有5级灰度等级的图像中,当V={0,1,2} 时,意味着灰度值为0或1或2的像素满足灰度值相似准则。)在这里插入图片描述
  • 连通性
    • 通路(Path):从像素p(x0,y0)到像素q(xn,yn)的通路是指一个像素序列(x0,y0),(x1,y1),…,(xn,yn),其中像素(xi,yi)和(xi-1,yi-1)是邻接的。此处,n为通路的长度。
    • 如果(x0,y0) = (xn,yn), 则通路为闭合通路
    • 根据邻接关系,通路分为4通路8通路m通路
  • 设p和q是一个图像子集S中的两个像素,如果存在一条完全由在S中的像素组成的从p到q的通路,则称p在S中与q相连通。
  • 连通成分 :一个像素集合,如果集合内的每一个像素与集合内的其他像素连通,则称该集合为一个连通成分。

像素间的距离

像素在空间的接近程度可用像素之间的距离来度量。
在这里插入图片描述
三种距离的定义:

  • 欧氏距离:欧氏距离(Euclidean Distance)De(p,q) = [( x –s )2+( y –t )2]1/2
  • 城市街区距离:D4(p,q) = | x –s | + | y –t |
  • 棋盘距离:D8(p,q) = max ( | x –s | , | y –t | )
  • 在这里插入图片描述

数字图像文件格式

图像根据构图原理和描述方式的不同,可以分为两类:矢量图,位图

  • 矢量图:是一种面向对象的、基于数学方法的图形方式。它以对象为中心,通过对每个对象的数学描述来存储图像。常用于工程应用(如工程制图)和艺术领域,极少用于自然图像
  • 位图:位图又称点阵图像,它以像素为单位,描述图像的实际信息,适合于描述自然界的图像

BMP图像文件格式

BMP(Bitmap)格式是微软公司为其Windows操作系统设置的标准图像格式。BMP图像文件是个人计算机上最常见、最简单的文件格式之一。BMP图像文件扩展名为.bmp或.BMP在这里插入图片描述
文件头数据结构:

typedef struct tagBITMAPFILEHEADER
{
	WORD bfType; 		// 必须是0x424D,’BM’;2B
	DWORD bfSize; 		// 文件大小,包括结构本身; 4B
	WORD bfReserved1; 	// 保留字,必须为0;2B
	WORD bfReserved2;	 // 保留字,必须为0; 2B
	DWORD bfOffBits;	 // 图像数据偏移量;4B
} BITMAPFILEHEADER;

位图信息头数据结构:

typedef struct tagBITMAPINFOHEADER
{
	DWORD biSize; 			//结构本身的大小(40字节)
	LONG biWidth; 			//图像宽度
	LONG biHeight; 			//图像高度
	WORD biPlanes; 			//显示设备的平面数目(取1)
	WORD biBitCount;		//每个像素颜色需要的位数
	DWORD biCompression;	 //压缩标志
	DWORD biSizeImage; 		//图像数据字节数
	LONG biXPelsPerMeter; 	//图像x方向分辨率
	LONG biYPelsPerMeter;	 //图像y方向分辨率
	DWORD biClrUsed; 		//指定图像实际用到的颜色数,如
							//果该值为零,则用到的颜色数为2的biBitCount次方。
	DWORD biClrImportant; 	//重要颜色数目,如果为零,则都是重要的。
} BITMAPINFOHEADER;

文件信息头数据结构:

数据项含义大小取值
biSize本结构的大小4B字节数(40或28H)
biWidth图像宽度4B像素数
biHeight图像高度4B像素数
biPlanes图像平面数2B必须为1
biBitCount每像素位数2B1、4、8、24、(32)
biCompression压缩类型4B0~3(一般为0,不压缩)
biSizeImage图像数据大小4B实际位图数据占用字节数
biXPelsPerMeter水平分辨率4B像素数/米(一般为0)
biYPelsPerMeter垂直分辨率4B像素数/米(一般为0)
biClrUsed使用颜色数4B>0时为颜色表项数=0时,无颜色表(24位色)
biClrImportant重要颜色数4B通常置0,所有颜色都重要

调色板的概念

节省存储数据量,显示设备对同时显示的颜色有限制
在这里插入图片描述
调色板的数据结构:

typedef struct tagRGBQUAD
{
	BYTE rgbBlue; 		//蓝色分量
	BYTE rgbGreen; 		//绿色分量
	BYTE rgbRed; 		//红色分量
	BYTE rgbReserved; 	//保留,为0
} RGBQUAD;

BMP图像文件的注意事项

  • 在BMP文件格式中规定每行的字节数必须是4的整数倍。若不是,要补0直至4的整数倍。
  • 图像字节数biSizeImage的计算方法为:biSizeImage=(biWidth×biBitCount+31)/32×4×biHeight
    或=bfSize-bfOffBits
  • 一般来说,BMP文件的数据从下到上,从左到右存放的。也就是说,从文件中最先读到的是图像最下面一行的左边第一个像素,然后是左边第二个像素…接下来是倒数第二行左边第一个像素,左边第二个像素…依次类推,最后得到的是最上面一行的最右一个像素。
  • 在调色板数据结构和图像数据中,每个像素的颜色排列顺序为:蓝、绿、红 ,不同于传统的RGB顺序!!

空域图像增强

图像增强:图像增强技术是众多图像处理技术中最基本、也是最重要的一种,是对图像进行加工,以得到视觉效果更“好,更“有用的”图像
目的:通过技术手段,突出有用信息,抑制无用信息,从而改善图像的视觉效果,或者使图像达到后续图像分析和识别所需的效果。

图像增强技术不增加图像的信息量,只是增强对某种信息的辨别能力

图像增强
空域方法
点运算
领域运算
频域方法
低通滤波
高通滤波
带通带阻滤波
同态滤波
图像间运算
灰度变换
直方图变换
图像平滑
图像锐化
线性滤波器
非线性滤波器

空域 :在图像处理中,空域指由像素组成的空间
空域增强方法:指直接作用于像素的增强方法,可以表示为:在这里插入图片描述其中,f(x,y)和g(x,y)分别为增强前后的图像,E表示增强操作

图像间的运算

指在两幅图像的对应像素间进行的、灰度值的算术和逻辑运算。运算结果是一幅新的图像

算术运算一般作用与灰度图像,逻辑运算一般作用于二值图像

图像的加法:

用途:利用图像相加取平均以减少和去除图像采集时混入的噪声

在这里插入图片描述
当样本数k增大时,平均图像会越来越趋近原始图像

图像间的减法

即求取两幅图像之间的差异。g(x,y) = f(x,y) - h(x,y)
用途: 用于医学图像处理中消除背景,或是运动目标检测

差值图像的灰度超出动态范围,怎么办?

  • 方法一: 对每个像素值加255,然后除以2。
  • 方法二: 首先,提取最小差值,并且把它的负值加到所有差值图像的像素中(得到一幅最小像素值为零的改进的差值图像)。然后,通过用255/ IMax 值去乘每个像素(其中 IMax 为改进的差值图像中最大像素取值)将图像中的所有像素标定到0至255的范围。

逻辑运算

逻辑运算一般应用于二值图像,基本的逻辑运算包括:

  • 补(complement):记为NOT q
  • 与(AND):记为p AND q ,或 p·q
  • 或(OR):记为p OR q,或p + q
  • 异或(XOR):记为 p XOR q

(黑色——1,白色——0)
在这里插入图片描述
组合逻辑运算:
在这里插入图片描述

灰度变换

根据原始图像中每个像素的灰度值,按照某种映射规则,将其转化为另一灰度值。常用的三种基本映射类型:线性函数,对数函数,幂次函数

  • 图像反转:在这里插入图片描述
  • 对数变换——动态范围压缩:使得一窄带低灰度输入图线映射为一宽带输出值。对数函数在很大程度上压缩了图像像素值的动态范围。在这里插入图片描述
  • 幂次变换:在这里插入图片描述

灰度直方图变换

灰度直方图是图像的一种统计表达。它反映了图像中灰度的分布情况,是多种空间域图像处理技术的基础,直方图操作能有效地增强图像。
h k = nk,(k=0,1,…,L-1),其中nk为图像中灰度级为宽带像素个数。在这里插入图片描述
直观上可以认为,如果一幅图像其像素占有全部可能的灰度级并且分布均匀,则这样的图像有高对比度和多变的灰度色调。

直方图均衡化

基本思想
变换原始图像的直方图为均匀分布 ——>大动态范围
使像素灰度值的动态范围最大 ——> 增强图像整体对比度(反差)
归一化直方图在这里插入图片描述
灰度累积直方图(归一化)
在这里插入图片描述在这里插入图片描述

直方图规定化

借助直方图变换实现规定/特定的灰度映射
三步骤

  • 对原始直方图进行灰度均衡化(求原始累积直方图)在这里插入图片描述

  • 规定需要的直方图,计算能使规定直方图均衡化的变化(求规定累积直方图)在这里插入图片描述

  • 将原始累积直方图对应映射到规定累积直方图

映射/对应原则
在这里插入图片描述在这里插入图片描述

  • 单映射规则(SML):取原始积累直方图的各项依次与规定累积直方图比较,每次都选择最接近的数值在这里插入图片描述在这里插入图片描述

  • 组映射规则(GML):(I(l)为整数函数)取原始积累直方图的各项依次与规定累积直方图比较,每次都选择最接近的数值在这里插入图片描述在这里插入图片描述
    对比

直方图规定化直方图均衡化
自动增强有选择地增强
效果不易控制需给定直方图
总得到全图增强的结果可得到特定增强的结果
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【视觉入门】——图形处理基础知识、BMP图像文件介绍、空域图像增强(点运算部分)——图像间变换、灰度变换、直方图变换 的相关文章

  • 文件缓冲区

    系统自动在内存区为程序中每一个正在使用的文件开辟一个文件缓冲区从内存向磁盘输出数据 xff0c 必须先送到内存中的缓冲区 xff0c 装满缓冲区后才一起送到磁盘 如果从磁盘向计算机读入数据 xff0c 则一次从磁盘文件将一批数据输入到内存缓
  • 【UE4学习】5.相机和蓝图进阶

    文章目录 相机基础Project Setting控制输入按键事件控制相机设置追踪目标CameraManager实现相机切换API接口与多态蓝图之间的通信方式GameMode 43 Manager显示当前相机信息事件调度器Sequencer入
  • 动态绑定实现的原理

    当用virtual关键字来声明一个成员函数 xff0c 编译器机会根据动态绑定机制在幕后完成一些工作 当编译器发现类中有虚函数的时候 xff0c 编译器会创建一张虚函数表 xff0c 把虚函数的函数入口地址放到虚函数表中 xff0c 并且在
  • 模板函数实现数组排序

    template lt class T gt void sortfun T arr int len int i j T tmp for i 61 0 i lt len 1 i 43 43 for j 61 i j lt len 1 j 43
  • 静态转换和动态转换

    1 静态转换 静态转换用于 xff0c 普通数据类型间的转换 xff0c 具有继承关系的父子类指针或引用的转换 class Dad class Son public Dad class MyClass 基础类型转换 void test1 i
  • 文件的原子操作

    文件的原子操作是指一个操作一旦启动 xff0c 则无法能被破坏它的其它操作打断 1 写文件原子操作 无论是两个打开 xff0c 还是dup xff0c 同时操作一个文件都可能引起混乱 xff0c 解决这个问题的方法是 xff0c 可以通过O
  • 目录操作

    创建目录 xff1a int mkdir const char pathname mode t mode xff1b pathname xff0c 路径 xff1b mode xff0c 目录访问权限 xff1b 返回值 xff1a 成功
  • 【UE4学习】6.粒子系统

    文章目录 粒子系统常用参数Simple Sprite Burst EmitterEmitter SettingsEmitter SpawnEmitter UpdateParticle SpawnParticle UpdateAdd Even
  • java中Array/List/Map/Object与Json互相转换详解

    JSON JavaScript Object Notation xff1a 是一种轻量级的数据交换格式 一 JSON建构有两种结构 xff1a 对象和数组 1 对象 xff1a 对象在js中表示为 扩起来的内容 xff0c 数据结构为 ke
  • ZipInputStream解压远程文件报错,java.lang.IllegalArgumentException: MALFORMED[1]

    我遇到的问题是报的这个错java lang IllegalArgumentException MALFORMED 1 at java util zip ZipCoder toString ZipCoder java 65 不是 java l
  • OAuth2.0接百度平台进行授权

    百度开发文档 xff1a https openauth baidu com doc regdevelopers html 1 注册开发者账号并创建一个应用 2 创建应用后 xff0c 获取API Key和Secret Key 3 创建一个S
  • Spring 中最常用的 11 个扩展点

    1 自定义拦截器 spring mvc拦截器根spring拦截器相比 xff0c 它里面能够获取HttpServletRequest和HttpServletResponse等web对象实例 spring mvc拦截器的顶层接口是 xff1a
  • 经典排序算法

    https juejin cn post 7198840786766102589
  • SpringBoot项目启动加载时排除某一个类

    在Application启动类上 xff0c 用这个注解就可以指定某个类不加载进容器 64 ComponentScan
  • 手写一个生产者/消费者模式(三种方式实现)

    这种设计模式需要满足以下三点要求 xff1a xff08 1 xff09 生产者生产数据到缓冲区中 xff0c 消费者从缓冲区中取数据 xff08 2 xff09 如果缓冲区已经满了 xff0c 则生产者线程阻塞 xff1b xff08 3
  • Android中Okhttp,Volley,Retrofit网络框架优缺点及对比

    Okhttp xff1a Square 公司开源的 OkHttp 是一个专注于连接效率的 HTTP 客户端 OkHttp 提供了对 HTTP 2 和 SPDY 的支持 xff0c 并提供了连接池 xff0c GZIP 压缩和 HTTP 响应
  • Google身份验证服务端实现

    import org apache commons codec binary Base32 import org apache commons codec binary Base64 import javax crypto Mac impo
  • 下载jdk8登录账号

    目前在官网下载低于jdk1 8的java jdk的时候需要登陆 xff0c 这边分享一个账号 xff0c 方便下载 2696671285 64 qq com 密码 xff1a Oracle123
  • idea中maven项目 jar包下载不完整解决办法

    有时从git上clone项目 xff0c maven工程 xff0c 有时候pom xml在project标签处报错 xff1a Failed to read artifact descriptor for xxx jar 这种有时候时ja
  • 【RoboMaster】舵机驱动&蓝牙模块教程

    本文是为参加2021赛季北京理工大学机器人队校内赛所写的简单教程 xff0c 意在帮助参赛选手快速了解校内赛所需模块的使用方法 xff0c 以及其与薪火培训知识的联系 舵机驱动 硬件接线 舵机是由直流电机 减速齿轮组 传感器和控制电路组成的

随机推荐