美文网首页图像处理
图片处理-opencv-2.图像平滑

图片处理-opencv-2.图像平滑

作者: lk311 | 来源:发表于2020-10-13 09:55 被阅读0次

图像平滑

 

1.图像增强

图像增强是对图像进行处理,使其比原始图像更适合于特定的应用,它需要与实际应用相结合。对于图像的某些特征如边缘、轮廓、对比度等,图像增强是进行强调或锐化,以便于显示、观察或进一步分析与处理。图像增强的方法是因应用不同而不同的,研究内容包括:


image.png

2.图像平滑

图像平滑是一种区域增强的算法,平滑算法有邻域平均法、中值滤波、边界保持类滤波等。在图像产生、传输和复制过程中,常常会因为多方面原因而被噪声干扰或出现数据丢失,降低了图像的质量(某一像素,如果它与周围像素点相比有明显的不同,则该点被噪声所感染)。这就需要对图像进行一定的增强处理以减小这些缺陷带来的影响。常用的算法均值滤波、方框滤波、高斯滤波和中值滤波

#为图像增加噪声
import cv2
import numpy as np

#读取图片
img = cv2.imread("data/test3.jpg", cv2.IMREAD_UNCHANGED)
rows, cols, chn = img.shape

#加噪声
for i in range(3000):    
    x = np.random.randint(0, rows) 
    y = np.random.randint(0, cols)    
    img[x,y,:] = 255

cv2.imshow("test3_noise", img)
           
#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()

#写入图像
cv2.imwrite("data/test3_noise.jpg", img)

1.均值滤波(简单局部平均)

均值滤波是指任意一点的像素值,都是周围N*M个像素值的均值

result = cv2.blur(原始图像,核大小)

  • 核大小是以(宽度,高度)表示的元祖形式。常见的形式包括:核大小(3,3)和(5,5)

缺点:图像模糊

import cv2  
import numpy as np  
import matplotlib.pyplot as plt
plt.figure(figsize=(10, 5)) 

#读取图片
img = cv2.imread('data/test3_noise.jpg')
source = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
 
#均值滤波
result = cv2.blur(source, (5,5))
 
#显示图形
titles = ['Source Image', 'Blur Image']  
images = [source, result]  
for i in range(2):  
    plt.subplot(1,2,i+1), plt.imshow(images[i], 'gray')  
    plt.title(titles[i])  
    plt.xticks([]),plt.yticks([])  
plt.show()
image.png

2.方框滤波(简单局部平均)

方框滤波和均值滤波核基本一致,区别是需不需要均一化处理

result = cv2.boxFilter(原始图像, 目标图像深度, 核大小, normalize属性)

  • 目标图像深度是int类型,通常用“-1”表示与原始图像一致
  • normalize属性表示是否对目标图像进行归一化处理。当normalize为false时,不进行均值化处理,实际上为求周围各像素的和,很容易溢出,溢出时均为白色,对应像素值为255。

缺点:图像模糊

import cv2
import numpy as np
import matplotlib.pyplot as plt
plt.figure(figsize=(15, 5)) 

#读取图片
img = cv2.imread('data/test3_noise.jpg')
source = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

#方框滤波
result_1 = cv2.boxFilter(source, -1, (5, 5), normalize=1)
result_0 = cv2.boxFilter(source, -1, (5, 5), normalize=0)
#显示图形
titles = ['Source Image', 'BoxFilter Image normalize=1', 'BoxFilter Image normalize=0']
images = [source, result_1, result_0]
for i in range(3):
    plt.subplot(1, 3, i + 1), plt.imshow(images[i], 'gray')
    plt.title(titles[i])
    plt.xticks([]), plt.yticks([])
plt.show()
image.png

3.高斯滤波(邻域平均)

高斯平滑与简单平滑不同,它在对邻域内像素进行平均时,给予不同位置的像素不同的权值。高斯滤波让临近的像素具有更高的重要度,对周围像素计算加权平均值,较近的像素具有较大的权重值。

dst = cv2.GaussianBlur(src, ksize, sigmaX)

  • src表示原始图像
  • ksize表示核大小(N, N), N必须是奇数
  • sigmaX表示X方向方差,主要控制权重

缺点:边界模糊

import cv2
import numpy as np
import matplotlib.pyplot as plt
plt.figure(figsize=(10, 5)) 

#读取图片
img = cv2.imread('data/test3_noise.jpg')
source = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

#高斯滤波
result = cv2.GaussianBlur(source, (3,3), 0)

#显示图形
titles = ['Source Image', 'GaussianBlur Image']
images = [source, result]
for i in range(2):
    plt.subplot(1, 2, i + 1), plt.imshow(images[i], 'gray')
    plt.title(titles[i])
    plt.xticks([]), plt.yticks([])
plt.show()
image.png

4.中值滤波(非线性)

中值滤波是非线性的图像处理方法,在去噪的同时可以兼顾到边界信息的保留。选一个含有奇数点的窗口W,将这个窗口在图像上扫描,把窗口中所含的像素点按灰度级的升或降序排列,取位于中间的灰度值来代替该点的灰度值。

dst = cv2.medianBlur(src, ksize)

  • src表示源文件
  • ksize表示核大小。核必须是大于1的奇数,如3、5、7等
import cv2
import numpy as np
import matplotlib.pyplot as plt
plt.figure(figsize=(10, 5)) 

#读取图片
img = cv2.imread('data/test3_noise.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

#中值滤波
result = cv2.medianBlur(img, 3)

#显示图形
titles = ['Source Image', 'medianBlur Image']
images = [img, result]
for i in range(2):
    plt.subplot(1, 2, i + 1), plt.imshow(images[i], 'gray')
    plt.title(titles[i])
    plt.xticks([]), plt.yticks([])
plt.show()
image.png

相关文章

  • 图片处理-opencv-2.图像平滑

    图像平滑 1.图像增强 图像增强是对图像进行处理,使其比原始图像更适合于特定的应用,它需要与实际应用相结合。对于图...

  • Opencv-Python学习笔记八——图像平滑(滤波)smoo

    图像平滑、模糊处理 消除图像中的噪声成分叫作图像的平滑化或滤波操作 “平滑处理“(smoothing)也称“模糊处...

  • 图像平滑处理

    图像平滑处理(Smoothing Images)图像模糊处理(Blurring Images)图像滤波(Image...

  • 图像平滑处理

    在为尽量保留原有图像信息的情况下,过滤掉图像内部的噪声,这就是图像的平滑处理。图像平滑处理会对图像中与周围像素点的...

  • 图像平滑处理

    图像平滑的用途很多,现在学习降噪功能。平滑处理需要滤波器,最常用的是线性滤波器, h(k,l)是一个加权系数, 归...

  • 图像平滑处理

    对于受噪声干扰严重的图象,由于噪声点多在频域中映射为高频分量,因此可以在通过低也可以直接在空域中用求邻域平均值的方...

  • 图像平滑处理

    《OpenCV轻松入门:面向Python》读书笔记作者:李立宗出版社:电子工业出版社出版时间:2019-05 第7...

  • 2019-03-04

    基于MATLAB图像处理技术之轮廓提取 1.迭代阈值处理和平滑滤波法处理方式 处理思路:1.读入图片: I=imr...

  • opencv-android-图像平滑处理

    基本概念图像的平滑也就是图像的模糊处理,简单但是使用频率很高,在执行许多高级处理之前都需要先进性图像的平滑处理,以...

  • OpenCV 之ios 图像平滑处理

    OpenCV 之ios 图像平滑处理 目标 本教程教您怎样使用各种线性滤波器对图像进行平滑处理,相关OpenCV函...

网友评论

    本文标题:图片处理-opencv-2.图像平滑

    本文链接:https://www.haomeiwen.com/subject/byompktx.html