使用Python+OpenCV进行图像处理(二)-亚博网站有保障的

发布时间:2021-06-27    来源:亚博网站信誉有保障的 nbsp;   浏览:13439次
本文摘要:图像预处理对于整个图像处理任务来讲尤其最重要。

图像预处理对于整个图像处理任务来讲尤其最重要。如果我们没展开合理的预处理,无论我们有多么好的数据也很难获得理想的结果。本篇是视觉入门系列教程的第二篇。

亚博网站信誉有保障的

整个视觉入门系列内容如下:解读颜色模型与在图像上绘制图形(图像处理基本操作)。基本的图像处理与滤波技术。从特征检测到人脸检测。图像拆分与分水岭(Watershed)算法(TBU)在边缘和轮廓检测中,噪声对检测的精度有相当大的影响。

因此,除去噪声和掌控像素值的大小可以协助模型探讨于整体特征,取得更高的精度。对应的图像处理技术还包括:模糊化(Blurring)、阈值化(thresholding)和形态切换(morphologicaltransformation)。本篇我们将详尽讲解这几个少见的图像预处理技术。

(本文假设读者早已熟知卷积的概念。)模糊化(Blurring)模糊化的目标是构建减震。

我们必需十分留意的是:如果我们把边缘检测算法应用于到高分辨率的图像上,我们就不会获得很多我们不感兴趣的检测结果;忽略,如果我们把图像模糊不清过于多,我们就不会遗失数据。因此,我们必须寻找一个必要的模糊不清量,从而不丧失理想的边缘。有多种技术用作构建模糊不清效果,在这里我们辩论OpenCV中常用的四种技术:平均值模糊不清(Averagingblurring)、高斯模糊不清(Gaussianblurring)、中值模糊不清(medianblurring)和双边滤波(bilateralfiltering)。

这四种技术应用于一个联合的基本原理,即用于滤波器(内核)对图像展开卷积运算。有所不同的是,在四种模糊不清方法中用于的滤波器的值是有所不同的。

平均值模糊不清(Averageblurring)是所取等价内核(kernel)区域下所有像素值的平均值更换中心的值。例如,假设等价一个大小为5X5的内核(kernel),我们计算出来卷积结果的平均值,并将结果放到等价区域的中心。示例如下:如果我们减少内核的大小,像素值将更为归一化。

亚博网站信誉有保障的

因此图像也不会显得更加模糊不清。让我们用下面的代码对比处理结果。(为了便于较为,将把完整图像特到结果中,展开对比表明。

亚博网站有保障的

)#ImporttheimageandconverttoRGBimg=cv2.imread('text.jpg')img=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)#Plottheimagewithdifferentkernelsizeskernels=[5,11,17]fig,axs=plt.subplots(nrows=1,ncols=3,figsize=(20,20))forind,sinenumerate(kernels):img_blurred=cv2.blur(img,ksize=(s,s))ax=axs[ind]ax.imshow(img_blurred)ax.axis('off')plt.show()中值模糊不清(Mediumblurring)和平均值模糊不清(Averageblurring)是一样的,只是它用于的是中值而不是平均值。于是以由于这个特性,当我们必须处置图像中忽然经常出现的噪音时(如“椒盐噪音”),用于中值模糊不清(mediumblurring)的效果要比平均值模糊不清(averageblurring)效果好。

高斯模糊不清(Gaussianblurring)是用于“值”具备高斯分布的核函数。由于这些值是由高斯函数分解的,因此它的参数必须一个sigma值。如上图,内核的值在附近中心的地方变高,在附近角的地方变大。将该方法应用于具备正态分布的噪声,如白噪声,效果较好。

双边滤波(BilateralFiltering)是高斯模糊不清的一个高级版本。模糊化不仅可以沉淀噪声,而且还不会光滑边缘。而双边滤波器能在除去噪声的同时维持边缘锐化。

这是由于它不仅用于高斯分布值,还同时考虑到了距离和像素值的差异。因此,必须登录sigmaSpace和sigmaColor这两个参数。

#Blurtheimageimg_0=cv2.blur(img,ksize=(7,7))img_1=cv2.GaussianBlur(img,ksize=(7,7),sigmaX=0)img_2=cv2.medianBlur(img,7)img_3=cv2.bilateralFilter(img,7,sigmaSpace=75,sigmaColor=75)#Plottheimagesimages=[img_0,img_1,img_2,img_3]fig,axs=plt.subplots(nrows=1,ncols=4,figsize=(20,20))forind,pinenumerate(images):ax=axs[ind]ax.imshow(p)ax.axis('off')plt.show()阈值化(Thresholding)图像的阈值化就是利用图像像素点产于规律,原作阈值展开像素点拆分,进而获得图像的二值图像。我们必须设置阈值和最大值,然后据此适当地展开像素值切换。常用的阈值化包括有五种有所不同的类型:二进制阈值化、反二进制阈值化、阈值化到零、反阈值化到零,和阈值切断。


本文关键词:亚博网站有保障的,亚博网站信誉有保障的

本文来源:亚博网站有保障的-www.boklt.com