c# 计算空格宽度像素_分享计算机视觉之图像处理Python之opencv

20c9ae8270e916480acd91631ce9aab1.png

start

f4a613d19bb095a5acb437bcf96cf84f.gif

计算机视觉

  计算机视觉信息的处理技术主要依赖于图像处理方法,经过处理后输出图像的质量得到相当程度的改善,既改善了图像的视觉效果,又便于计算机对图像进行分析、处理和识别。

90b9df00af0acfe6e8d4c629fe6f6549.png

01

♡♡♡

当我们使用Photoshop等图像编辑器打开图像,无限放大图像,用放大镜方式查看图像时,会看到很多彩色的小方格(针对彩色图而言)。其实这其中的每一个彩色的方格都是由三个数值量化的,或者说是由一个具有三个元素的向量量化的。灰度图像的每一个像素都是由一个数字量化的,而彩色图像的每一个像素都是由三个数字组成的向量量化的。最常用的是由R、G、B三个分量来量化的,RGB模型使用加性色彩混合以获知需要发出什么样的光来产生给定的色彩,源于使用阴极射线管(CRT)的彩色电视,具体色彩的值用三个元素的向量来表示,这三个元素的数值分别代表三种基色:Red、Green、Blue的亮度。假设每种基色的数值量化成个数,就如同8位灰度图像一样,灰度量化成个数。RGB图像的红、绿、蓝三个通道的图像都是一张8位图,因此颜色的总数为,如(0,0,0)代表黑色,(255,255,255)代表白色,(255,0,0)代表红色。

因此计算机“看到”的图像或者图像在计算机内部表现形式是数字矩阵,简单来说,彩色图在每个像素上有三个值,而灰度图只有一个值。

我们习惯的坐标表示是先 x 横坐标,再 y 纵坐标。在图像处理中,这种惯性思维尤其需要担心。因为在计算机中,图像是以矩阵的形式保存的,先行后列。所以,一张 宽×高×颜色 通道=480×256×3 的图片会保存在一个 256×480×3 的三维张量中。图像处理时也是按照这种思想进行计算的(其中就包括 OpenCV 下的图像处理),即 高×宽×颜色通道。

  但是问题来了,cv2.resize这个api却是个小例外。因为它的参数输入却是 宽×高×颜色通道。

opencv中的image的shape属性是=高*宽*通道,而cv.resize操作却是输入为(宽*高),这里尤为要注意。

90b9df00af0acfe6e8d4c629fe6f6549.png

02

♡♡♡

处理图像主要步骤

 1.图像增强 

  图像的增强用于调整图像的对比度,突出图像中的重要细节,改善视觉质量。通常采用灰度直方图修改技术进行图像增强。图像的灰度直方图是表示一幅图像灰度分布情况的统计特性图表,与对比度紧密相连。

灰度图跟彩色图不一样,灰度图每一个方格代表图像的一个像素。那么针对图像的基本信息,如何解读其中的宽度、高度和位深度呢?灰度图所对应的数字矩阵中,水平方向上的方格数对应其基本信息中的“宽度”,垂直方向上的方格数对应其基本信息中的“高度”,而计算机会将每一个像素数字化为一个数值,灰度图的”位深度“是8bit(彩色是24位),代表将每一个方格数字化为[0,255]之间的uchar类型数字,即用256个数字来衡量灰度的深浅,值越大,代表越亮,值越小,代表越灰,255代表白色,0代表黑色。因此,将上述彩色图灰度化以后,计算机看到的是一个二维数字矩阵。opencv中的cvtColor函数实现BGR彩色空间的图像向灰度图像和其他颜色空间转换,并且,在opencv中,实现将彩色图像(一个向量)转化为灰度像素(一个数值)的公式如下:

a9e8440c971dd8ecd8e1f4a6d87261f2.png

为什么要将彩色灰度处理,当然是为了后续的处理啦。既然是处理图像,我们当然要保证输入图像的大小不能太大啦!

OpenCV自带的cv2.resize()函数可以实现放大与缩小,函数声明如下:cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]);

其参数解释如下:src 输入图像矩阵、dsize 二元元祖(宽,高)、即输出图像的大小、dst 输出图像矩阵、fx 在水平方向上缩放比例,默认值为0、fy 在垂直方向上缩放比例,默认值为0。

90b9df00af0acfe6e8d4c629fe6f6549.png

03

♡♡♡

3.图像平滑

  图像的平滑处理技术即图像的去噪声处理,主要是为了去除实际成像过程中因成像设备和环境所造成的图像失真,提取有用信息,去除噪声,恢复原始图像是图像处理中的一个重要内容。图像降噪其实指每一副图像都包含某种程度的噪声,噪声可以理解为由一种或者多种原因造成的灰度值的随机变化,如由光子通量的随机性造成的噪声等,在大多数情况下,需要平滑技术(也常称为滤波或者降噪技术)进行抑制或者去除。比较常用的平滑处理算法包括基于二维离散卷积的高斯平滑、均值平滑、基于统计学方法的中值平滑,以及具备保持边缘作用的平滑算法的双边滤波、导向滤波等。

90b9df00af0acfe6e8d4c629fe6f6549.png

04

♡♡♡

4.图像分割

  图像分割是将图像分成若干部分,每一部分对应于某一物体表面,在进行分割时,每一部分的灰度或纹理符合某一种均匀测度度量。其本质是将像素进行分类,分类的依据是像素的灰度值、颜色、频谱特性、空间特性或纹理特性等。

图像的分割是为了目标的定位,目前定位的方法很多,但总的来说可以分为以下4类:

(1)基于颜色的分割方法,这种方法主要利用颜色空间的信息,实现车牌分割,包括彩色边缘算法、颜色距离和相似度算法等;

(2)基于纹理的分割方法,这种方法主要利用车牌区域水平方向的纹理特征进行分割,包括小波纹理、水平梯度差分纹理等;

(3)基于边缘检测的分割方法;

最普遍的是基于canny算子做边缘检测。

Canny边缘检测算子的方向性质保证了很好的边缘强度估计,而且能同时产生边缘梯度方向和强度两个信息,即能在一定程度上抗噪声又能保持弱边缘。

Canny算法步骤:

(1)去噪

任何边缘检测算法都不可能在未经处理的原始数据上很好地處理,所以第一步是对原始数据与高斯 mask 作卷积,得到的图像与原始图像相比有些轻微的模糊(blurred)。这样,单独的一个像素雜訊在经过高斯平滑的图像上变得几乎没有影响。

(2)用一阶偏导的有限差分来计算梯度的幅值和方向。

(3)对梯度幅值进行非极大值抑制。

仅仅得到全局的梯度并不足以确定边缘,因此为确定边缘,必须保留局部梯度最大的点,而抑制非极大值。非极大值抑制产生的二值灰度矩阵的潜在点中按照高阈值寻找边缘,并以所找到的点为中心寻找邻域内满足低阈值的点,从而形成一个闭合的轮廓。然后对于不满足条件的点直接删除掉。

主要是利用水平投影方法和垂直投影方法进行目标定位。

(4)基于数学形态法的分割方法。

4.1形态学处理

完成了高斯去噪以后,为了后面更加准确的提取车牌的轮廓,我们需要对图像进行形态学处理。

erode操作也就是腐蚀操作,类似于卷积,也是一种邻域运算,但计算的不是加权求和,而是对邻域中的像素点按灰度值进行排序,然后选择该组的最小值作为输出的灰度值。具体过程就是:输入图像的高、宽,对于图像中的任意位置,取以为中心、高为、宽为的邻域,其中和均为奇数,对邻域中的像素点灰度值进行排序,然后去最小值,作为输出图像的位置处的灰度值。

dilate操作就是膨胀操作,与腐蚀操作类似,膨胀是取每一个位置邻域内的最大值。既然是取邻域内的最大值,那么显然膨胀后的输出图像的总体亮度的平均值比起原图会有所上升,而图像中较亮物体的尺寸会变大;相反,较暗物体的尺寸会减小,甚至消失。

4.2阈值分割 

完成初步的形态学处理以后,我们需要对图像进行阈值分割,对图像进行数字处理时,我们需要把图像分成若干个特定的、具有独特性质的区域,每一个区域代表一个像素的集合,每一个集合又代表一个物体,而完成该过程的技术通常称为图像分割,它是从图像处理到图像分析的关键步骤。。我们通过阈值处理,就是希望能够从背景中分离出我们的研究对象。

最后关于 图像编码和传输 和 图像识别 下周接着分享。

简单先说一下图像编码和传输:

  数字图像的数据量是相当庞大的,高信道速率意味着高投资,也意味着普及难度增加。因此,传输过程中,对图像数据进行压缩显得非常重要。图像数据的压缩主要通过图像数据的编码和变换压缩完成。

图像识别:

  图像的识别过程实际上可以看作是一个标记过程,即利用识别算法来辨别景物中已分割好的各个物体,给这些物体赋予特定的标记,它是机器视觉系统必须完成的一个任务。目前用于图像识别的方法主要分为决策理论和结构方法。

小编推荐HOT

bcab4df3537326ad706dfbee819634e7.png视觉+机器人,如何实现连接器的自动装配? 6b6d054b54145ba7342e9344a593d8c6.png

bcab4df3537326ad706dfbee819634e7.png机器视觉在制造业应用的10个案例  6b6d054b54145ba7342e9344a593d8c6.png

bcab4df3537326ad706dfbee819634e7.png机器视觉技术发展的五大趋势  6b6d054b54145ba7342e9344a593d8c6.png

bcab4df3537326ad706dfbee819634e7.png搞懂机器视觉基本内容,这份PPT就够了! 6b6d054b54145ba7342e9344a593d8c6.png

bcab4df3537326ad706dfbee819634e7.png机器视觉系统集成发展的现状和前景  6b6d054b54145ba7342e9344a593d8c6.png

bcab4df3537326ad706dfbee819634e7.png2019年光技术发展的十大趋势  6b6d054b54145ba7342e9344a593d8c6.png

bcab4df3537326ad706dfbee819634e7.png机器视觉:PC式视觉系统与嵌入式视觉系统区别  6b6d054b54145ba7342e9344a593d8c6.png

bcab4df3537326ad706dfbee819634e7.png 干货:变成计算机视觉大师,需要经历的几个阶段   6b6d054b54145ba7342e9344a593d8c6.png

bcab4df3537326ad706dfbee819634e7.png 计算机视觉和图像处理之间有什么区别? 6b6d054b54145ba7342e9344a593d8c6.png

bcab4df3537326ad706dfbee819634e7.png 基于HALCON的机器视觉开发,C++或C#如何选择? 6b6d054b54145ba7342e9344a593d8c6.png

66f2441297c53b13c7e6d575a49c7d0c.gif End 66f2441297c53b13c7e6d575a49c7d0c.gif

商务合作:QQ:1504328545

声明:部分内容来源于网络,仅供读者学习、交流之目的。文章版权归原作者所有。如有不妥,请联系删除。

更多是视觉资讯尽在“新机器视觉”微信公众号~

56e6de114691bcc2251cad6da8a98d70.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值