OpenCV学习2

本文详细介绍了OpenCV中的形态学操作,包括卷积的简介、腐蚀、膨胀、开运算、闭运算、梯度、顶帽、黑帽等。此外,还探讨了图像平滑技术,如平均模糊、高斯模糊、中值模糊和双边滤波,展示了这些技术如何用于图像噪声去除和边缘保留。
摘要由CSDN通过智能技术生成

形态学

卷积的简介

卷积是数学和信号处理领域中的一个重要概念,它在计算机视觉、深度学习和图像处理等领域中也扮演着关键的角色。卷积可以用来处理信号、图像、音频和其他类型的数据,以提取特征、滤波、降噪等操作。以下是卷积的简介:

卷积操作:卷积是一种数学运算,通常表示为符号 “*”。在离散卷积中,它通常应用于两个离散信号(通常是函数)的卷积,以生成第三个信号。卷积的结果是通过将两个信号重叠并按照一定的规则相乘和相加来计算的。

卷积核(卷积滤波器):卷积核是一个小的矩阵或滤波器,用于在卷积操作中滑动在输入信号上。卷积核的值决定了卷积操作中如何计算新的值。卷积核可以用于各种任务,如特征提取、边缘检测、模糊等。

卷积在图像处理中的应用:在计算机视觉中,卷积经常用于图像处理。通过在图像上滑动卷积核,可以执行诸如模糊、锐化、边缘检测、特征提取等操作。卷积在卷积神经网络(CNN)中也起到关键作用,用于图像分类和对象检测等任务。

卷积神经网络(CNN):CNN 是一种深度学习模型,广泛应用于计算机视觉任务。CNN 利用卷积层来自动学习图像中的特征。卷积层使用卷积核在图像上进行滑动,以提取不同的特征,这些特征组合在一起形成对图像的高级理解。

卷积的数学表示:在离散情况下,一维信号的卷积可以表示为:$ (f * g)[n] = \sum_{m=-\infty}^{\infty} f[m] \cdot g[n-m] $,其中 $ f $ 和 $ g $ 是两个离散信号。在二维情况下,图像的卷积可以表示为:$ (I * K)[x, y] = \sum_{i=-\infty}^{\infty} \sum_{j=-\infty}^{\infty} I[x-i, y-j] \cdot K[i, j] $,其中 $ I $ 是输入图像,$ K $ 是卷积核。

卷积在信号处理和图像处理领域有广泛的应用,它是许多计算机视觉和深度学习任务的基础。通过适当选择卷积核和卷积操作,可以实现各种不同的信号处理效果。在深度学习中,卷积神经网络的卷积层使用卷积核来学习图像中的特征,从而实现图像分类、对象检测、语义分割等任务。

参考视频:https://www.bilibili.com/video/BV1x44y1P7s2/?spm_id_from=333.999.0.0
参考博客:https://blog.csdn.net/qq_41810539/article/details/130762847?spm=1001.2014.3001.5502

腐蚀(Erosion)

腐蚀(Erosion)是数学形态学中的一种基本操作,通常用于处理二值图像(包括黑白图像或掩模图像)。腐蚀操作的原理是通过滑动一个称为结构元素(structuring element)的小窗口或卷积核(通常是一个小的矩形或圆形区域)来改变图像的形状。

腐蚀操作的原理如下:

结构元素(structuring element):腐蚀操作需要一个结构元素,这是一个小的二值矩阵或掩模,它定义了腐蚀操作的形状和大小。结构元素通常是一个小的正方形或矩形,但也可以是其他形状,如圆形。

**滑动窗口:**结构元素在输入图像上滑动,通常从图像的左上角开始,一次一个像素地移动。对于每个窗口位置,腐蚀操作检查结构元素的覆盖区域是否完全包含在图像的前景区域(值为1的区域)中。

**腐蚀操作:**如果结构元素的覆盖区域完全包含在前景区域中,那么输出图像的对应位置将设置为前景(值为1),否则将设置为背景(值为0)。这意味着只有当结构元素完全包含在前景区域内时,输出图像中的像素才保持为前景;否则,它将被腐蚀,变为背景。

腐蚀操作的主要应用包括:

图像细化(Thinning): 通过反复应用腐蚀操作,可以细化图像中的对象边界,使它们更接近实际边界。

去除噪声: 腐蚀操作可以帮助去除图像中的小噪声或不连续的像素,从而平滑图像。

对象分离: 腐蚀操作可以用于将相互靠近的对象分离,使它们更容易被分析和识别。

形态学转换: 腐蚀是形态学操作的基本组成部分,它可以与其他形态学操作如膨胀、开运算和闭运算结合使用,以实现各种图像处理任务。

总之,腐蚀是一种常见的图像处理操作,可用于改变图像的形状、去除噪声和改善对象分割。它在数字图像处理和计算机视觉中有广泛的应用。

#矩形
kernel1 = cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))
print(kernel1)

#椭圆
kernel2 = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(5,5))
print("kernel2\n",kernel2)

#十字形
kernel3 = cv2.getStructuringElement(cv2.MORPH_CROSS,(5,5))
print("kernel3\n",kernel3)

代码使用了OpenCV中的getStructuringElement函数,它用于创建形态学操作所需的结构元素,通常用于腐蚀、膨胀、开运算、闭运算等形态学操作。在这里,你创建了一个矩形结构元素,该结构元素的大小是5x5像素。

结构元素的类型是cv2.MORPH_RECT,表示矩形结构元素。这个矩形结构元素的示例如下:
[[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1]]
在这个矩形结构元素中,所有的元素都是1,表示这个结构元素覆盖的区域是一个实心的矩形,用于执行形态学操作时,它将检查区域内的像素。

你可以根据需要创建不同形状和大小的结构元素,以适应不同的图像处理任务。

膨胀

膨胀与腐蚀相反,取的是局部最大值。cv2.dilate()

开运算

Opening开运算
先腐蚀后膨胀叫开运算,其作用是消除小白点。
这类形态学操作用cv2.morphologyEx()函数实现

闭运算

闭运算则相反:先膨胀后腐蚀。其作用是消除小黑点。

Gradient形态学梯度

膨胀图减去腐蚀图,dilation - erosion,得到物体的轮廓

Top Hat顶帽/White Hat白帽

原图减去开运算后的图:src - opening

Black Hat黑帽

闭运算后的图减去原图:closing - src

import cv2
import matplotlib.pyplot as plt
import numpy as np



def imread(image):
    image = cv2.imread(image)
    image = cv2.cvtColor(image,cv2.COLOR_BGR2RGB)
    return image


def show(image,title='image'):
    plt.imshow(image)
    plt.axis('off')
    plt.title(title)
    plt.show()


# Erosion腐蚀
# 其原理是在原图的小区域内取局部最小值,其函数是cv2.erode()。
# 这个核也叫结构元素,因为形态学操作其实也是应用卷积来实现的,
# 结构元素可以是矩形/椭圆/十字形,
# 可以用cv2.getStructuringElement()
# 来生成不同形状的结构元素,比如:

#矩形
kernel1 = cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))
print("kernel1\n",kernel1)

#椭圆
kernel2 = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(5,5))
print("kernel2\n",kernel2)

#十字形
kernel3 = cv2.getStructuringElement(cv2.MORPH_CROSS,(5,5))
print("kernel3\n",kernel3)



image = imread('image.jpg')
show(image)


#对图片进行腐蚀
erosion = cv2.erode(image,kernel1)
show(erosion)

for i in range(3):
    erosion = cv2.erode(image,kernel1,iterations=i+1)
    show(erosion,'erosion'+str(i+1))


# Dilation膨胀
# 膨胀与腐蚀相反,取的是局部最大值。cv2.dilate()

for i in range(3):
    dilation = cv2.dilate(image,kernel1,iterations=i+1)
    show(dilation,'dilation'+str(i+1))





# Opening开运算
# 先腐蚀后膨胀叫开运算,其作用是消除小白点。
# 这类形态学操作用cv2.morphologyEx()函数实现

image2 = imread('image2.jpg')
show(image2,'image2.jpg')

#去除百点
opening = cv2.morphologyEx(image2,cv2.MORPH_OPEN,kernel1)
show(opening,'opening')
#对图片进行腐蚀
erosion2 = cv2.erode(image2,kernel1)
show(erosion2,'erosion2')

# Closing闭运算
# 闭运算则相反:先膨胀后腐蚀。其作用是消除小黑点。
closing = cv2.morphologyEx(image2,cv2.MORPH_CLOSE,kernel1)
show(closing,"closing")

#先做开运算
opening = cv2.morphologyEx(image2,cv2.MORPH_OPEN,kernel1)
closing = cv2.morphologyEx(opening,cv2.MORPH_CLOSE,kernel1)
show(closing,"opening_closing")

# Gradient形态学梯度
# 膨胀图减去腐蚀图,dilation - erosion,得到物体的轮廓


gradient = cv2.morphologyEx(image,cv2.MORPH_GRADIENT,kernel1)
show(gradient,'gradient')

# Top Hat顶帽/White Hat白帽
# 原图减去开运算后的图:src - opening
tophat = cv2.morphologyEx(image2,cv2.MORPH_TOPHAT,kernel1)
show(tophat,"tophat")


# Black Hat黑帽
# 闭运算后的图减去原图:closing - src
blackhat = cv2.morphologyEx(image2,cv2.MORPH_BLACKHAT,kernel1)
show(blackhat,'blackhat')





这段代码演示了形态学操作的基本原理和不同类型的形态学操作在图像处理中的应用。以下是对代码的主要部分进行解释:

imread(image) 函数用于读取图像,并将其从BGR颜色空间转换为RGB颜色空间,以便Matplotlib正确显示图像。

show(image, title=‘image’) 函数用于显示图像,并可以指定窗口标题。它使用Matplotlib库来显示图像,关闭坐标轴,并设置标题。

然后,代码创建不同形状的结构元素(核),分别是矩形、椭圆和十字形,并使用 cv2.getStructuringElement() 函数生成这些结构元素。这些结构元素在形态学操作中用于定义操作的区域。

接下来,代码读取了名为 ‘image.jpg’ 的图像,并显示它。

随后,代码展示了腐蚀(Erosion)的效果。腐蚀是一种形态学操作,它可以缩小图像中的白色区域,用结构元素在图像上滑动,将覆盖区域内的像素设置为局部最小值。

代码还演示了膨胀(Dilation)的效果。膨胀是一种形态学操作,它可以扩大图像中的白色区域,用结构元素在图像上滑动,将覆盖区域内的像素设置为局部最大值。

接下来,代码展示了开运算(Opening)和闭运算(Closing)的效果。开运算通常用于去除小白点,而闭运算通常用于去除小黑点。开运算是先腐蚀后膨胀,闭运算是先膨胀后腐蚀。

代码还演示了形态学梯度(Gradient)的效果,它是膨胀图减去腐蚀图,用于得到物体的轮廓。

最后,代码展示了顶帽(Top Hat)和黑帽(Black Hat)的效果。顶帽是原图减去开运算后的图,用于突出图像中的亮区域。黑帽是闭运算后的图减去原图,用于突出图像中的暗区域。

这段代码提供了形态学操作的基本示例,这些操作对于图像处理中的噪声去除、边缘检测和特征提取等任务非常有用。你可以根据需要使用这些操作来改进图像处理过程。

图像平滑

Averaging平均

计算卷积框覆盖区域所有像素的平均值得到卷积的结果
图像处理中的平均平滑是一种基本的空间域滤波技术,通常用于降低图像中的噪声。它基于简单的平均计算,通过在图像的每个像素周围应用一个特定大小的滑动窗口或卷积核,以减少图像中噪声的影响。

平均平滑的基本原理是将每个像素的值替换为其周围像素值的平均值。在滤波过程中,对于图像中的每个像素,以该像素为中心,取周围邻域内的像素值,然后计算这些像素值的平均数,并将该平均值作为该像素的新值。这有助于模糊图像,从而减少图像中的高频噪声,例如盐和胡椒噪声。

通常情况下,滤波器(或卷积核)的尺寸越大,平均平滑的效果就越明显,但同时也会导致图像细节的损失。因此,在选择滤波器大小时需要权衡平滑效果和图像细节的保留。

在实际应用中,平均平滑是一种简单而常用的图像处理技术,适用于许多场景,如去除轻微噪声、减少图像的不连续性或平滑过渡,以便于后续图像处理任务的进行。

Gaussian高斯模糊

高斯模糊(Gaussian Blur)是一种常用的图像处理技术,通过应用高斯函数对图像进行模糊处理,以减少图像中的噪声和细节,从而实现图像平滑。

高斯模糊的原理是利用高斯函数生成一个高斯核(或滤波器),将该核应用于图像的每个像素。该核的大小由标准差(sigma)来决定,标准差越大,生成的高斯核越大,模糊效果越明显。

应用高斯模糊时,对于图像的每个像素,取周围邻域内的像素值,然后使用高斯核的权重对这些像素值进行加权平均。由于高斯函数是一种钟形曲线,越靠近中心的像素,其权重越大,而离中心越远的像素权重越小,这样可以减少噪声对图像的影响。

高斯模糊通常用于图像处理中,可以有效地模糊图像并减少噪声,同时保留图像的整体特征。这种模糊技术在计算机视觉、图像处理、计算机图形学等领域广泛应用,常用于预处理、特征提取以及图像增强等操作。

Median中值模糊

中值模糊(Median Blur)是一种图像处理技术,它使用像素邻域中像素值的中值来替代中心像素的值。这种模糊技术是基于统计学概念,以减少图像中的噪声和细节,从而实现图像平滑的目的。

中值模糊的操作步骤如下:

1.对图像中的每个像素应用一个固定大小的邻域(通常是一个正方形或矩形区域)。
2.在该邻域内收集所有像素的值,并计算它们的中值(即所有像素值按大小排序后的中间值)。
3.使用这个中值来替代邻域中心像素的值。
中值模糊的优点在于它能够很好地处理图像中的脉冲噪声(也称为盐和胡椒噪声),因为它基于排序后的中间值,而不受异常值的影响。相比较其他模糊方法(例如均值模糊或高斯模糊),中值模糊在保留图像边缘细节方面表现更好。

这种模糊技术通常应用于图像处理中,例如医学图像处理、数字图像处理、计算机视觉等领域,常用于去除图像中的噪声或减少图像细节以便更好地进行后续处理。

Bilateral双边滤波

双边滤波(Bilateral Filtering)是一种非线性滤波技术,用于图像处理中的平滑处理。与一般的线性滤波器(如高斯滤波器)不同,双边滤波器考虑了像素之间的空间距离以及像素值之间的差异,因此更能保留图像中的边缘信息,同时去除噪声。

这种滤波器结合了两个概念:像素之间的空间距离和像素值之间的相似性。在双边滤波中,像素值的相似性用一个高斯函数来衡量,该函数取决于像素间的灰度差异,而空间距离的影响是另一个高斯函数。将这两个高斯函数相乘,得到最终的滤波结果。

双边滤波器通过以下方式工作:

  1. 遍历图像中的每个像素,并在一个定义的空间窗口内考虑相邻像素。
  2. 对于每个邻域内的像素,计算像素值的差异以及它们之间的空间距离。
  3. 基于像素值差异和空间距离计算权重。
  4. 通过对每个像素的值乘以对应的权重,得到滤波后的像素值。

双边滤波在去除噪声的同时尽量保留图像的边缘细节,因此常用于图像去噪和保边滤波。它能够在减少噪声的同时保持图像的细节和边缘信息,适用于许多图像处理任务,如图像增强、医学图像处理以及计算机视觉等领域。

import cv2
import matplotlib.pyplot as plt
import numpy as np




def imread(image):
    image = cv2.imread(image)
    image = cv2.cvtColor(image,cv2.COLOR_BGR2RGB)
    return image

def show(image,title='image'):
    plt.imshow(image)
    plt.axis('off')
    plt.title(title)
    plt.show()


image = imread('image.jpg')
show(image,'image.jpg')


# Averaging平均
# 计算卷积框覆盖区域所有像素的平均值得到卷积的结果

kernelsizes=[(3,3),(9,9),(15,15)]
plt.figure(figsize=(15,15))

for i,kernel in enumerate(kernelsizes):
    plt.subplot(1,3,1+i)
    #平均平滑
    blur = cv2.blur(image,kernel)
    #不显示坐标
    plt.axis('off')
    #设置标题
    plt.title('Blurred'+str(kernel))
    plt.imshow(blur)


plt.show()


# Gaussian高斯模糊
# 现在把卷积核换成高斯核
# (简单来说,方框不变,将原来每个方框的值是 相等的,
# 现在里面的值是符合高斯分布的,方框中心的值最大,
# 其余方框根据 距离中心元素的距离递减,构成一个高斯小山包。
# 原来的求平均数现在变成求 加权平均数,全就是方框里的值)

kernelsizes = [(3,3),(9,9),(15,15)]
plt.figure(figsize=(15,15))
for i,kernel in enumerate(kernelsizes):
    plt.subplot(1,3,i+1)
    #Gaussian高斯模糊
    blur = cv2.GaussianBlur(image,kernel,0)
    #不显示坐标
    plt.axis('off')
    # 设置标题
    plt.title('Blurred2'+str(kernelsizes))
    plt.imshow(blur)
plt.show()

# Median中值模糊
# 顾名思义就是用与卷积框对应像素的中值来替代中心像素的值。
image = imread('image2.jpg')
show(image,'image2.jpg')


plt.figure(figsize=(15,15))
for i,kernel in enumerate((3,9,15)):
    plt.subplot(1,3,i+1)
    #Median中值模糊
    blur = cv2.medianBlur(image,kernel)

    #不显示坐标
    plt.axis('off')

    #设置标题
    plt.title('Blurred3'+str(kernel))
    plt.imshow(blur)
plt.show()


# Bilateral双边滤波
# 能在保持边界清晰的情况下有效的去除噪音。
# 我们已经知道高斯滤波器是求中心点邻近区域像素的高斯加权平均值。
# 这种高斯滤波器只考虑像素之间的空间关系,
# 而不会考虑像素值之间的关系(像素的相似度)。
# 所以这种方法不会考虑一个像素是否位于边界。
# 因此边界也会别模糊掉,而这正不是我们想要。
#
# 双边滤波在同时使用空间高斯权重和灰度值相似性高斯权重。
# 空间高斯函数确保只有邻近区域的像素对中心点有影响,
# 灰度值相似性高斯函数确保只有与中心像素灰度值相近的才会被用来做模糊运算。
# 所以这种方法会确保边界不会被模糊掉,因为边界处的灰度值变化比较大。


image = imread('wood.jpg')
show(image,'wood.jpg')

params = [(11,21,7),(11,41,21),(15,75,75)]
plt.figure(figsize=(15,15))
#领域直径,灰度值相似性高斯函数标准差,空间高斯函数标准差
for i,(diameter,sigmaColor,sigmaSpace) in enumerate(params):
    plt.subplot(1,3,i+1)
    #Bilateral 双边滤波
    blur = cv2.bilateralFilter(image,diameter,sigmaColor,sigmaSpace)
    #不显示坐标
    plt.axis('off')
    plt.title('Blurred' + str((diameter,sigmaColor,sigmaSpace)))
    plt.imshow(blur)
plt.show()

这段代码演示了图像处理中的一些常见平滑滤波方法:

  1. Averaging平均:通过计算卷积框覆盖区域所有像素的平均值来得到卷积的结果。使用cv2.blur函数执行平均滤波。三种不同内核尺寸下的结果被展示,以产生不同程度的模糊效果。
  • cv2.blur函数是OpenCV中的平均平滑函数,也称为均值滤波。它计算卷积框覆盖区域内所有像素的平均值来获取卷积的结果。该函数基于卷积操作,采用一个核(卷积核)或滤波器,在图像上执行平均模糊处理。

    语法为:

    cv2.blur(src, ksize[, dst[, anchor[, borderType]]])
    

    参数包括:

    • src: 输入图像,通常为8位无符号图像。
    • ksize: 核的大小,即卷积核的尺寸。例如,(5, 5) 表示一个 5x5 的卷积核。卷积核的尺寸越大,平滑效果越明显。
    • dst: 输出图像,其大小和类型与输入图像src相同。
    • anchor: 表示锚点位置,默认为(-1, -1),即表示核的中心为锚点。
    • borderType: 边界模式,表示对边界处理的方式。
  1. Gaussian高斯模糊:使用高斯核进行滤波,它的权重由高斯分布决定。高斯滤波器的内核比平均滤波器更强,以产生更加自然的模糊效果。这里使用cv2.GaussianBlur函数,同样展示了不同内核尺寸下的结果。

cv2.GaussianBlur是OpenCV中用于图像处理的函数之一,用于对图像进行高斯模糊。高斯模糊是一种常用的图像模糊方法,它利用高斯函数对图像进行加权平均以实现模糊的目的。该方法通过卷积运算,对图像的每个像素点周围的邻域像素进行高斯加权平均,从而实现对图像的平滑处理。

该函数的语法如下:

cv2.GaussianBlur(src, ksize, sigmaX, dst, sigmaY = 0, borderType = cv2.BORDER_DEFAULT)

参数包括:

  • src: 输入图像,数据类型是uint8或float32。
  • ksize: 高斯核的尺寸。这个参数需要是一个奇数的正整数,用于定义高斯核的大小,例如(3, 3)、(5, 5)等。
  • sigmaX: X方向上的高斯核标准差。如果值为0,函数会根据ksize自动计算标准差值。
  • dst: 输出图像,与src具有相同的尺寸和类型。
  • sigmaY: Y方向上的高斯核标准差,如果为0则与sigmaX相同。默认为0。
  • borderType: 推断边界类型,默认为cv2.BORDER_DEFAULT

高斯模糊在图像处理中常用于减少图像噪声和细节,平滑图像以帮助其他图像处理任务,例如边缘检测。模糊核的大小和标准差参数决定了模糊程度。更大的内核尺寸和更大的标准差通常会导致更显著的图像平滑效果。

此外,高斯滤波器的特点之一是对图像进行模糊处理的同时能保持边缘信息,因此不会使边缘区域变得模糊,这对保留图像边缘的清晰度很有帮助。

  1. Median中值模糊:用卷积框对应像素的中值替代中心像素的值。中值滤波的优点是能够有效地去除噪声,同时保留图像的边缘信息。使用cv2.medianBlur函数进行中值模糊,同样展示了不同内核尺寸下的效果。
  • cv2.medianBlur函数是OpenCV中的中值模糊函数。中值滤波用于去除图像中的椒盐噪声或其他随机噪声。它将卷积框覆盖区域内像素的中值作为卷积的结果,而不是像均值滤波那样计算平均值。

    语法为:

    cv2.medianBlur(src, ksize[, dst])
    

    参数包括:

    • src: 输入图像,通常为8位无符号图像。
    • ksize: 核的大小,代表卷积框的大小。这个值必须是一个大于1的奇数,比如 3, 5, 7, ...,它表示卷积核的大小,卷积核尺寸越大,滤波效果越明显。
    • dst: 输出图像,大小和类型与输入图像src相同。

cv2.blur执行简单的平滑处理,将卷积框内像素的平均值作为输出;而cv2.medianBlur使用中值来平滑图像,通常用于去除图像中的随机噪声。

  1. Bilateral双边滤波:该滤波方法通过结合空间高斯函数和灰度值相似性高斮函数,以确保图像在去噪的同时保持边缘清晰。这种方法在保持图像细节的同时有效地去除噪声,并防止边缘模糊。cv2.bilateralFilter函数被使用,以展示不同参数配置下的结果。

cv2.bilateralFilter是OpenCV中的一个图像处理函数,用于执行双边滤波。双边滤波器与高斯滤波器类似,但不仅考虑空间邻域内像素的权重,还考虑像素间的灰度值相似性。

该函数的语法为:

cv2.bilateralFilter(src, d, sigmaColor, sigmaSpace, dst, borderType)

它包含以下参数:

  • src: 输入图像,数据类型为uint8或float32。
  • d: 表示邻域直径,一般设置为正数。它决定了像素邻域的直径,用于确定要在图像上执行滤波的区域大小。
  • sigmaColor: 值表示颜色空间的标准偏差,用于确定在颜色空间中像素值的高斯函数标准差。这个值越大,表明该像素领域内的邻域越大。
  • sigmaSpace: 值表示空间空间的标准偏差,用于确定在空间空间中像素值的高斯函数标准差。这个值越大,表明该像素领域内的邻域越大。
  • dst: 输出图像,其大小、类型与src相同。
  • borderType: 边界填充的类型,默认为cv2.BORDER_DEFAULT

双边滤波在模糊图像的同时能够保留图像的边缘信息。除了普通的高斯滤波的空间域,双边滤波还考虑了灰度相似性。这意味着具有相似灰度值的像素在该滤波器中被视为相关的,从而保留了图像的边缘信息,使图像在进行模糊处理时不会失去太多的细节。

总结:
以上这些滤波方法在图像处理中常用于去除噪声,模糊图像或减少图像的细节信息。它们的选择取决于特定任务的要求,例如平滑度、保边特性或保留细节。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值