手机网站案例,南京谷歌优化,如何在百度能搜索到公司网站,精品课程网站建设项目验收单文章目录 1.自适应阈值分割介绍2.自适应阈值函数参数解析3.高斯概率函数介绍4.自适应阈值分割核心代码5.自适应阈值分割效果展示6.参考文章及致谢 1.自适应阈值分割介绍 在图片处理过程中#xff0c;针对铺前进行二值化等操作的时候#xff0c;我们希望能够将图片相应区域内所… 文章目录 1.自适应阈值分割介绍2.自适应阈值函数参数解析3.高斯概率函数介绍4.自适应阈值分割核心代码5.自适应阈值分割效果展示6.参考文章及致谢 1.自适应阈值分割介绍 在图片处理过程中针对铺前进行二值化等操作的时候我们希望能够将图片相应区域内所有的信息提供保留。实验室环境下相应的素材是模板化的但是将实验室方法应用于现实环境中时我们会发现光影环境对于效果的影响其实是很大的。在这种情况下进行处理会使得结果不如人意一块黑一块白且黑的区域的特征无法提取。这时候自适应阈值算法尤为重要。与全局阈值不同它更加注重上下文关系将原本图片分割成更小的区域进行判断极大地降低了阴影对于图片本身的影响。 自适应阈值用于二值化处理图像具有比较好的处理效果,相比对全阈值处理方法自适应阈值中的每一个像素点的阈值都不是固定相同的而是由其领域中的图像像素点加权平均计算而得到的这样的处理方法有如下好处
1.每个像素位置处的二值化阈值不是固定不变的而是由其周围邻域像素的分布来决定的。
2.亮度较高的图像区域的二值化阈值通常会较高而亮度较低的图像区域的二值化阈值则会相适应地变小。
3.不同亮度、对比度、纹理的局部图像区域将会拥有相对应的局部二值化阈值,这样处理出的图像效果更加明显。2.自适应阈值函数参数解析 在Opencv库函数中给出了自适应阈值分割的函数如下所示 fig1 cv2.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C, dstNone) 接下来我将具体解释adaptiveThreshold()中各个参数的意义如下所示 figcv2.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C, dstNone)
参数解释:1.src:原图像,就是你需要进行自适应阈值分割处理的图像2.maxValue:最大像素点,其含义表示如果某点的像素值大于对应的阈值,那么将像素值取为255.3.adaptiveMethod:计算阈值的方法,Opencv中包括了两种:1.cv.ADAPTIVE_THRESH_MEAN_C:计算出领域的平均值作为阈值。2.DAPTIVE_THRESH_GAUSSIAN_C:计算出领域的高斯均值作为阈值。4.thresholdType:取值类型,只有两个取值:1.THRESH_BINARY 2.THRESH_BINARY_INV5.blockSize:计算单位是像素的邻域块大小选择,这是局部邻域大小,只能取奇数,如3/5/7/9/11等6.C:阈值偏移量,正负数都可以,所以阈值的大小CadaptiveMethod计算出的阈值值3.高斯概率函数介绍
高斯分布是人工智能方面很常见的一种概率分布函数常见的一维高斯概率密度分布函数如下所示: p ( x ) 1 σ 2 π e − ( x − μ ) 2 2 σ 2 p(x)\frac1{\sigma\sqrt{2\pi}}e^{-\frac{(x-\mu)^2}{2\sigma^2}} p(x)σ2π 1e−2σ2(x−μ)2
在高斯分布函数中我们可以随意调节标准差 σ \sigma σ和 μ \mu μ的值来进行高斯分布的变换如下所示 在图像处理中我们一般用到二维的高斯概率分布函数如下所示: f ( x , y ) ( 2 π σ 1 σ 2 1 − ρ 2 ) − 1 e x p [ − 1 2 ( 1 − ρ 2 ) ( ( x − μ 1 ) 2 σ 1 2 − 2 ρ ( x − μ 1 ) ( y − μ 2 ) σ 1 σ 2 ( y − μ 2 ) 2 σ 2 2 ) ] f\left(x,y\right)\left(2\pi\sigma_{1}\sigma_{2}\sqrt{1-\rho^{2}}\right)^{-1}exp\left[-\frac{1}{2\left(1-\rho^{2}\right)}\left(\frac{\left(x-\mu_{1}\right)^{2}}{\sigma_{1}^{2}}-\frac{2\rho\left(x-\mu_{1}\right)\left(y-\mu_{2}\right)}{\sigma_{1}\sigma_{2}}\frac{\left(y-\mu_{2}\right)^{2}}{\sigma_{2}^{2}}\right)\right] f(x,y)(2πσ1σ21−ρ2 )−1exp[−2(1−ρ2)1(σ12(x−μ1)2−σ1σ22ρ(x−μ1)(y−μ2)σ22(y−μ2)2)] 当我们令 σ 1 \sigma_{1} σ1 σ 2 \sigma_{2} σ2 σ \sigma σ同时将 μ \mu μ和 ρ \rho ρ置为0得出的高斯概率函数如下所示: g ( x , y ) 1 2 π σ 2 e − ( x 2 y 2 ) 2 σ 2 g(x,y)\frac{1}{2\pi\sigma^2}e^{-\frac{(x^2y^2)}{2\sigma^2}} g(x,y)2πσ21e−2σ2(x2y2) 高斯概率函数是相对于二维坐标产生的其中x,y为点坐标要得到一个高斯滤波器模板应先对高斯函数进行离散化将得到的值作为模板的系数。例如要产生一个33的高斯滤波器模板以模板的中心位置为坐标原点进行取样模板在各个位置的坐标如下图所示x轴水平向右y轴竖直向下 标准差 σ 1.3 的 33 的整数形式的高斯滤波器如下 K 1 16 ⋅ [ 1 2 1 2 4 2 1 2 1 ] K\dfrac{1}{16}\cdot\begin{bmatrix}121\\242\\121\end{bmatrix} K161⋅ 121242121 标准差σ的值可以任意选取如果σ较小那么生成的模板的中心系数较大而周围的系数较小这样对图像的平滑效果就不是很明显反之σ较大则生成的模板的各个系数相差就不是很大比较类似均值模板对图像的平滑效果比较明显不管选择什么 σ值我们构建3*3高斯核的时候要确保这九个点加起来为1从而得到最终的高斯模板。 4.自适应阈值分割核心代码
import cv2
import numpy as np
from matplotlib import pyplot as plt
# 支持中文
plt.rcParams[font.sans-serif] [SimHei] # 用来正常显示中文标签
plt.rcParams[axes.unicode_minus] False # 用来正常显示负号
def adaptiveThreshold_test():img cv2.imread(rC:\Users\Zeng Zhong Yan\Desktop\py.vs\Mechine Learning\lena.jpg,0)#读入图片img cv2.medianBlur(img, 5)#中值滤波来处理图像#图像切割#全图像二值化/全局阈值法处理图像ret, th1 cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)#平均值计算阈值方法(cv2.ADAPTIVE_THRESH_MEAN_C)-偏移值th2 cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 2)#高斯值计算阈值方法(cv2.ADAPTIVE_THRESH_GAUSSIAN_C)-偏移值th3 cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2)#图像可视化绘制titles [u原始图像, u全局阈值处理图像,u自适应平均阈值处理图像, u自适应高斯阈值处理图像]images [img, th1, th2, th3]for i in range(4):plt.subplot(2, 2, i 1), plt.imshow(images[i], gray)plt.title(titles[i])plt.xticks([]), plt.yticks([])plt.show()if __name__ __main__:adaptiveThreshold_test()5.自适应阈值分割效果展示 6.参考文章及致谢
本章内容的完成离不开大佬文章的启发和帮助在这里列出名单如果对于内容还有不懂的可以移步对应的文章进行进一步的理解分析。
1.自适应阈值图像切割:https://blog.csdn.net/weixin_43977647/article/details/115354680?spm1001.2014.3001.5502
如果大家这这篇blog中有什么不明白的可以去他的专栏里面看看内容非常全面应该能够有比较好的解答。
在文章的最后再次表达由衷的感谢