数字图像处理

【数字图像处理】图像的面积与周长计算

旧时模样 提交于 2019-12-02 00:09:28
二值化图像区域标记 在二值化图像中,相互联结的黑像素集合成为一个(黑)区域,通过对图像内每个区域进行标记操作,求得区域的数目。 处理前的f是二值的,像素要么为0(黑),要么为255(白) 处理后每个像素的值即为其所处理区域的标号(1,2,3,。。。) 标记规则 1.初始化标记为0,从左到右,从上到下逐个像素扫描 2.若该点为物体颜色,则继续判断该点的左上、正上,右上及左前点是否都不为物体,则标号加1,若该点为背景色,则跳过。 3.优先级依次为右上点,正上点,左上点及左前点。右上点的优先级最高,左前点的优先级最低。 4.继续遍历图像,若右上点为物体,则该点标记上与右上点相同的值。 5.若右上不为物体,则判断正上点,左上点及左前点 特殊情况:当前点的右上点及左前点为不同标记,正上点和左上点不为物体,则当前点标记同右上点置相同的值,把所有标记与左前点相同的像素值都标记成与右上点同样的值。 如图下面的黑点,如果出现上面的特殊情况,可以这样处理: int sign_count = 0; int sum[5] = {0}; int sign_temp; for(int y = 1; y<120 - 1;y++) for(int x = 1; x<180 - 1;x++) { //只有当像素点为物体,才进行下面的判断。 if(img[y][x] == 0) { //解决特殊情况 if(img[y

【数字图像处理】内边界跟踪算法

早过忘川 提交于 2019-12-01 22:21:21
轮廓提取 轮廓提取:对于一副二值化图像,物体与背景分开,如果背景是白物体,物体为黑的话,我们可以采用掏空内部点法进行轮廓提取。 具体算法如下: 首先开辟新的内存空间,然后遍历图像,如果8个邻域像素都和中心点不相同,则对新的内存空间的该点进行置值。 这里原图背景是白,物体为黑的,新的内存空间全部置为白,对原图像的每点进行判断,如果8个邻域像素都和中心点不相同,则将内存缓冲区中的该点置为黑。 边界跟踪算法 基于 边缘 的分割常用方法之一,用于 区域已分出 (二值或已标注),但 边界未知 的情况。 首先在图像中找到一个边界点,然后从这个边界点出发,按照某种策略寻找下一个边界点,以此跟踪出目标边界。 对于边界跟踪法,重要的是三个部分, 边界的起始点 、 搜索规则(边界判别准则) , 搜索终止条件 。 起始点:确定边界的起始搜索点,起始点的选择很关键,对某些图像,选择不同的起始点会导致不同的结果。 搜索规则(边界判别准则):确定合适的边界判别准则和搜索准则,判别准则用于判断一个点是不是边界点,搜索准则则指导如何搜索下个边缘点。 搜索终止条件:确定搜索的终止条件。 这里搜索终止条件对于封闭轮廓和非封闭轮廓有不同的处理: 封闭轮廓:   直至跟踪的后续点回到起始点。 非封闭轮廓:   待续。。。 我们这里对封闭轮廓的跟踪算法进行讨论,具体算法如下: 1.找到起始点,记录该点 2

【数字图像处理c】OpenCV中cv2.imread()与PIL中Image.open()的差别

99封情书 提交于 2019-12-01 16:43:30
cv2.imread()与PIL中Image.open()两个函数都是用来读取图像,但是在使用过程存在一些差别 。 1. 首先,从导入库方面看: # opencv-python import cv2 # PIL from PIL import Image 2. 读取图像 # opencv-python img = cv2.imread('' ---.jpg'') img = cv2.imread('' ---.jpg'', flages=cv2.IMREAD_GRAYSCALE) # flags是可选读入模式,如灰度图等,默认为None # PIL img = Image.open("---.jpg") img = Image.open("---.jpg", mode=‘r’ ) # mode只能并且默认是‘r’,未查阅到相关资料,暂时不清楚具体代表什么。 值得注意的是,在文档中对Image.open()函数的描述如下: Opens and identifies the given image file. This is a lazy operation; this function identifies the file, but the file remains open and the actual image data is not read from the file

数字图像处理入门(10)-小波变换

只谈情不闲聊 提交于 2019-12-01 15:21:12
一、前言   数字图像处理第七章的小波和多分辨率处理学不走了,把小波变换基础学习一下。如果有人不小心查看到这篇文章,建议跳过这里,直接阅读: https://blog.csdn.net/hellozex/article/details/78330923 https://blog.csdn.net/hellozex/article/details/78330923 二、基础概念 2.1 傅里叶变换基本原理 参考知乎: https://www.zhihu.com/question/22864189/answer/40772083 傅里叶变换公式如下: 原始信号如下: 基函数如下: 总结:说到底,这就是一个搞基的过程,通过对基的伸缩、平移。缩得窄,对应高频;伸得宽,对应低频。然后这个基函数不断和信号做相乘。某一个尺度(宽窄)下乘出来的结果,就可以理解成信号所包含的当前尺度对应频率成分有多少。于是,基函数会在某些尺度下,与信号相乘得到一个很大的值,因为此时二者有一种重合关系,那么我们就知道信号包含该频率的的成分有多少。 缺点:由于基函数的能量范围是整个空间,对于一些平稳的信号可以很好的处理,比如周期函数。但是现实中大多数信号都是非平稳信号,能量范围是整个空间的基函数,傅里叶之后的频域就只有频率幅值,这样就会丢失时域信息。这里可能会有几个问题: 傅里叶的本质是作甚? 答:他想表达的是一种变化

数字图像处理——图像增强

ぐ巨炮叔叔 提交于 2019-11-30 13:38:58
图像增强 图像增强的目的是:改善图像的视觉效果或使图像更适合于人或机器的分析处理 \[ 图像增强 \begin{cases} 空域法 \begin{cases} 点操作 \begin{cases} 直接灰度变换\\ 直方图修正 \end{cases}\\ 邻域操作 \begin{cases} 图像平滑\\ 图像锐化 \end{cases} \end{cases}\\ 频域法 \begin{cases} 低通滤波\\ 高通滤波 \end{cases} \end{cases} \] 点操作 直接灰度变换 \(g(x,y)=T[f(x,y)]\) \(T\) => 灰度映射函数 坐标位置 \((x,y)\) 为 \(f\) 的自变量,表示当前灰度值,经过函数 \(T\) 转变为 \(g\) , 注意在T函数中 \(f(x,y)\) 为其自变量 直接灰度变换又可以分为: 线性变换 分段线性变换 非线性变换 线性变换 & 分段线性变换 对于 \(f(x,y)\) 灰度范围为 \([a,b]\) 的部分,进行线性变换 \[g(x,y) = {d-c\over b-a}[f(x,y)-a]+c\] 我们可以用它来做什么? 举个简单的例子,我们可以很容易的通过调整灰度分布,使得图片白的部分更白,黑的部分更黑 void increase(Mat &inputImage, Mat&

【数字图像处理】腐蚀运算与膨胀运算

人盡茶涼 提交于 2019-11-29 17:55:37
形态学基本概念 基本思想:用一定形态的结构元素去度量和提取图像中的对应形状,达到分析知识的目的。可用于图像处理的各个方面,包括图像分割、边界检测、特征提取。 结构元素:形态学变换中的基本元素,使为了探测图像的某种结构信息而设计的特定形状和尺寸的图像,称为收集图像结构信息的探针。 结构元素有多种类型:如圆形、方形、线型等,可携带知识(形态、大小、灰度和色度信息)来探测、研究图像的结构特点。 形态学运算包括:二值化腐蚀和膨胀、二值化开闭运算、骨架抽取、击中击不中变换等。 形态学四个基本算子:膨胀,腐蚀、开启和闭合组成,这些基本运算还可以推导和组合成各种数学形态学实用算法。 腐蚀运算 腐蚀运算思路 :定义结构元素(与模板类似),结构元素在整幅图像中移动,移动到每个像素点上,只有结构元素与图像上对应像素点的像素值全部相等时,保留这个像素点的值。 腐蚀运算作用 :消除物体边界点,使边界点向内部收缩,可以把小于结构元素的物体去除。选取不同大小的结构元素,去除不同大小的物体。如两个物体间有细小的连通,通过腐蚀可以将两个物体分开。 腐蚀运算 : 腐蚀运算示意图 : 基本方法: 通常拖到结构元素在X域移动,在每一个位置上,当结构元素B在中心平移到X图像上的某优点(x,y)。 如果结构元素内的每一个像素都与以(x,y)为中心的相同邻域中对应像素完全相同,那么就保留(x,y)像素点。

【数字图像处理】边缘检测与图像分割

馋奶兔 提交于 2019-11-29 16:47:56
原文链接: 边缘检测与图像分割 作者: HUSTLX 1图像分割原理 图像分割的研究多年来一直受到人们的高度重视,至今提出了各种类型的分割算法。Pal把图像分割算法分成了6类:阈值分割,像素分割、深度图像分割、彩色图像分割,边缘检测和基于模糊集的方法。但是,该方法中,各个类别的内容是有重叠的。为了涵盖不断涌现的新方法,有的研究者将图像分割算法分为以下六类:并行边界分割技术、串行边界分割技术、并行区域分割技术、串行区域分割技术、结合特定理论工具的分割技术和特殊图像分割技术。而在较近的一篇综述中,更有学者将图像分割简单的分割数据驱动的分割和模型驱动的分割两类。下面将图像分割方法主要分以下几类:基于阈值的分割方法、基于区域的分割方法、基于边缘的分割方法、基于数学形态的分割方法以及基于特定理论的分割方法等,对其中主要的分别进行简要介绍。 1.1灰度阈值分割法 是一种最常用的并行区域技术,它是图像分割中应用数量最多的一类。阈值分割方法实际上是输入图像f到输出图像g的如下变换: 其中,T为阈值,对于物体的图像元素g(i,j)=l,对于背景的图像元素g(i,j)=0。 由此可见,阈值分割算法的关键是确定阈值,如果能确定一个合适的阈值就可准确地将图像分割开来。如果阈值选取过高,则过多的目标区域将被划分为背景,相反如果阈值选取过低,则过多的背景将被划分到目标区 [7] 。阈值确定后

【数字图像处理】图像边缘锐化之梯度锐化

徘徊边缘 提交于 2019-11-29 09:45:32
关于具体在实际场景的使用和图像会慢慢更新。 梯度锐化方法 图像平滑往往使图像中的边界、轮廓变得模糊,为了减少影响,需要利用图像锐化技术,使边缘变得清晰。常用的方法有: 直接以梯度值代替 辅以门限判断 给边缘规定一个特定的灰度级 给背景规定灰度级 根据梯度二值化图像 梯度运算   梯度锐化中,首先应该知道梯度是什么,怎么计算。   梯度是一个矢量,由分别沿x方向和y方向计算微分的结果构成。   构成有以下几种方式: 梯度锐化 直接以梯度值代替 思路:目标图像像素点用双向一次微分结果替代。 for(int i = 1; i < Use_ROWS- 1; i++) { for(int j = 1; j < Use_Line -1; j++) { Image_Use[i][j] = sqrt((Image_Use[i][j+1] - Image_Use[i][j])*(Image_Use[i][j+1] - Image_Use[i][j])+(Image_Use[i+1][j] - Image_Use[i][j])*(Image_Use[i+1][j] - Image_Use[i][j])); } } 辅以门限判断 思路:我们对梯度(变化率)取了一个预值,当图像的梯度变化很小时,本来是物体内部的数据的亮度分布不均匀产生的偏差,可以不考虑进去。只有大于等于一定预值,才认为是边界

数字图像处理2

六眼飞鱼酱① 提交于 2019-11-28 18:03:59
原文引用 大专栏 https://www.dazhuanlan.com/2019/08/27/5d64bdd9c65fe/ 上一篇文章介绍了数字图像处理的概念,数字图像的处理工具及表示,这篇文章,我们接着来介绍数字图像的类型。 一、图像类型 工具箱支持四种图像类型: 灰度级图像 二值图像 索引图像 RGB图像 大多数单色图像的处理都采用的是 二值图像 或者 灰度级图像 ,我们首先来介绍这两种图像,剩下两种之后再来讲解。 二、灰度级图像 ​ 一个灰度级图像其实是一个数据矩阵,矩阵的值代表灰度的浓淡。当灰度级图像的元素是unit8或者unit16类时,它们分别具有[0,255]和[0,65535]的整数值,若图像为double类或者single类,其值为浮点数,且其图像的值通常会归一到[0,1]范围内。 ​ 下面我们来介绍一下上面提到的图像处理的类: 名称 描述 double 双精度浮点数,范围为±10 308 (8字节/元素) single 单精度浮点数,范围为±10 38 (4字节/元素) unit8 无符号8bit整数,范围为[0,255] (范围1字节/元素) unit16 无符号16bit整数,范围为[0,65535] (范围2字节/元素) unit32 无符号32bit整数,范围为[0,4294967295] (范围4字节/元素) int8 有符号8bit整数,范围为[

图像识别技术初探(2014/2/17)

断了今生、忘了曾经 提交于 2019-11-27 23:04:35
目录 1 前言. 1 1.1 植物的发展史. 1 1.1.1 植物界的类群及多样性. 1 1.1.2 植物的分类等级. 2 1.2植物的识别方法. 3 1.2.1 花与种子的特性. 3 1.2.2 叶子的特征. 3 1.3 什么是数字图像处理. 5 1.3.1 数字图像处理概念及其意义. 5 1.3.2 数字图像处理中的基本图像类型. 6 1.3.3 图像格式分析. 7 1.4 什么是模式识别. 8 1.4.1 模式识别的概念. 8 1.4.2 模式识别研究方向. 9 1.4.3 模式识别在实际中的应用. 10 2 预处理与算法研究. 10 2.1 图像的预处理. 10 2.2 数字图像处理方法. 11 2.2.1 二值处理. 11 2.2.2 模糊模式识别算法. 12 2.2.3 边缘检测与轮廓提取. 12 3.2.4 信息存储. 14 3 算法实现. 14 3.1 分析实际工作过程. 14 3.2 算法实现过程. 15 3.2.1 掏空内部点算法的基本思想. 15 3.2.2 边界跟踪算法的基本思想. 15 3.2.3 部分实现代码. 18 4 小结分析. 25 5 参考文献. 26 6 致谢. 27 1 前言 1.1 植物的发展史 1.1.1 植物界的类群及多样性 植物界的发生和发展经历了漫长的历史,随着地球历史的发展,由原始生物不断演化,其间大约经历了30亿年