基于OpenCV的传统视觉应用 -- OpenCV图像处理 图像模糊处理 图像锐化处理
创始人
2025-05-30 20:33:08
0

图像处理

图像处理是用计算机对图像进行分析,以获取所需结果的过程,又称为影像处理。图像处理一般是指数字图像的处理。数字图像是用工业相机、摄像机、扫描仪等设备经过拍摄得到的一个大的二维数组,该数组的元素称为像素,其值称为灰度值。

图像模糊

均值滤波

均值滤波是指任意一点的像素值,都是周围 NxM 个像素值的均值。
指通过将图像与低通滤波器内核进行卷积来实现图像模糊,这对于消除噪声很有用。

OpenCv里可以用cv2.blur(img,(3,3)) 函数实现图像的均值滤波。
第二个参数(3,3)称为滤波核。

中值滤波

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

OpenCV里可以使用cv2.medianBlur(img,3)函数来实现
3为简写方式 ,与(3,3)是一样的。

高斯滤波

为了克服简单局部平均法的弊端(图像模糊),目前已提出许多保持边缘、细节的局部平滑算法。它们的出发点都集中在如何选择邻域的大小、形状和方向、参数加平均及邻域各店的权重系数等。

图像高斯平滑也是邻域平均的思想对图像进行平滑的一种方法,在图像高斯平滑中,对图像进行平均时,不同位置的像素被赋予了不同的权重。高斯平滑与简单平滑不同,它在对邻域内像素进行平均时,给予不同位置的像素不同的权值

cv2.GaussianBlur(source,(3,3),0)
第一个参数为图像对象
第二个参数为滤波核
第三个参数0为高斯核标准差

实例

import cv2
import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']   # 指定默认字体为黑体
mpl.rcParams['axes.unicode_minus'] = False   # 正常显示负号# 均值滤波
img = cv2.imread('./dog.jpg', 0)  # 第二个参数0 是设置为灰度图用的
blur = cv2.blur(img, (5, 5))# 显示图像
plt.subplot(1, 2, 1)
plt.imshow(img, 'gray')
plt.title("zaosheng")
plt.subplot(1, 2, 2)
plt.imshow(blur, 'gray')
plt.title("blur")
plt.show()# 中值滤波
img = cv2.imread("./dog.jpg", 0)
dst = cv2.medianBlur(img, (5))    # 卷积核大小为5
# 显示图像
plt.subplot(1, 2, 1)
plt.imshow(img, "gray")
plt.title("zaosheng")
plt.subplot(1, 2, 2)
plt.imshow(dst, 'gray')
plt.title("medianBlur")
plt.show()# 高斯滤波
img = cv2.imread("./dog.jpg", 0)
m_dst = cv2.medianBlur(img, (5))
g_dst = cv2.GaussianBlur(img, (5, 5), 0)  # 高斯核为5*5# 显示图像
plt.subplot(1, 3, 1), plt.imshow(img, 'gray')
plt.title("zaosheng")
plt.subplot(1, 3, 2), plt.imshow(g_dst, 'gray')
plt.title('高斯')
plt.subplot(1, 3, 3), plt.imshow(m_dst, 'gray')
plt.title('medianBlur')
plt.show()

均值滤波

在这里插入图片描述
中值滤波
在这里插入图片描述
高斯滤波:
在这里插入图片描述

图像锐化

图像锐化是补偿图像的轮廓,以及增强图像的边缘和灰度跳变的部分,使图像变得清晰的操作,分为空间域处理和频处理两类。
图像锐化的目的是突出图像地物的边缘、轮廓,或者某些线性目标要素的特征。这邪恶滤波方法增强了地物边缘与周围像元之间的反差,因此也称为边缘增强。

import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
dog = cv.imread("./dog.jpg", 0)
# plt.imshow(dog, 'gray')
# plt.title("灰度图")
# plt.show()dog_f = np.copy(dog)
dog_f = dog_f.astype("float")
# plt.imshow(dog_f, "gray")
# plt.title('灰度图2')
# plt.show()row, column = dog.shape
gradient = np.zeros((row, column))
for x in range(row-1):for y in range(column-1):gx = abs(dog_f[x+1, y]-dog_f[x, y])   # 通过相邻像素相减计算图像梯度gy = abs(dog_f[x, y+1]-dog_f[x, y])gradient[x, y] = gx + gy# plt.imshow(gradient, 'gray')
# plt.title("梯度图")
# plt.show()# 叠加原图和梯度图 就能够实现图像锐化
# 将小于0 的像素设置为0 将大于255的像素设置为255sharp = dog_f + gradient
sharp = np.where(sharp < 0, 0, np.where(sharp > 255, 255, sharp))# 显示图像
gradient = gradient.astype("uint8")
sharp = sharp.astype("uint8")plt.subplot(2, 2, 1), plt.imshow(dog), plt.title("原图")
plt.subplot(2, 2, 2), plt.imshow(dog_f, "gray"), plt.title("灰度图")
plt.subplot(2, 2, 3), plt.imshow(gradient, "gray"), plt.title("梯度图")
plt.subplot(2, 2, 4), plt.imshow(sharp, "gray"), plt.title("锐化图")
plt.show()

在这里插入图片描述

相关内容

热门资讯

linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
C++ 机房预约系统(六):学... 8、 学生模块 8.1 学生子菜单、登录和注销 实现步骤: 在Student.cpp的...
JAVA多线程知识整理 Java多线程基础 线程的创建和启动 继承Thread类来创建并启动 自定义Thread类的子类&#...
【洛谷 P1090】[NOIP... [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G ...
国民技术LPUART介绍 低功耗通用异步接收器(LPUART) 简介 低功耗通用异步收发器...
城乡供水一体化平台-助力乡村振... 城乡供水一体化管理系统建设方案 城乡供水一体化管理系统是运用云计算、大数据等信息化手段࿰...
程序的循环结构和random库...   第三个参数就是步长     引入文件时记得指明字符格式,否则读入不了 ...
中国版ChatGPT在哪些方面... 目录 一、中国巨大的市场需求 二、中国企业加速创新 三、中国的人工智能发展 四、企业愿景的推进 五、...
报名开启 | 共赴一场 Flu... 2023 年 1 月 25 日,Flutter Forward 大会在肯尼亚首都内罗毕...
汇编00-MASM 和 Vis... Qt源码解析 索引 汇编逆向--- MASM 和 Visual Studio入门 前提知识ÿ...
【简陋Web应用3】实现人脸比... 文章目录🍉 前情提要🌷 效果演示🥝 实现过程1. u...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
windows安装JDK步骤 一、 下载JDK安装包 下载地址:https://www.oracle.com/jav...
分治法实现合并排序(归并排序)... 🎊【数据结构与算法】专题正在持续更新中,各种数据结构的创建原理与运用✨...
在linux上安装配置node... 目录前言1,关于nodejs2,配置环境变量3,总结 前言...
Linux学习之端口、网络协议... 端口:设备与外界通讯交流的出口 网络协议:   网络协议是指计算机通信网...
Linux内核进程管理并发同步... 并发同步并发 是指在某一时间段内能够处理多个任务的能力,而 并行 是指同一时间能够处理...
opencv学习-HOG LO... 目录1. HOG(Histogram of Oriented Gradients,方向梯度直方图)1...
EEG微状态的功能意义 导读大脑的瞬时全局功能状态反映在其电场结构上。聚类分析方法一致地提取了四种头表面脑电场结构ÿ...
【Unity 手写PBR】Bu... 写在前面 前期积累: GAMES101作业7提高-实现微表面模型你需要了解的知识 【技...