Opencv简单图像处理(二)

15 篇文章 3 订阅
6 篇文章 1 订阅

前言

接着前面一篇博客,第二部分主要介绍简单的图像平滑处理和图像锐化处理

图像平滑

图像平滑从信号处理的角度看就是去除其中的高频信息,保留低频信息,和通信原理里面信号的处理有点类似。平滑处滤波对图像的低频分量增强,同时削弱高频分量,用于消除图像中的随机噪声,起到平滑作用。总的来说平滑处理的目的就是改善图像质量,消除噪音
同时,根据滤波器的不同方法也不同,这里就举均值滤波的方式,还有高斯加权滤波,中值滤波, 双边滤波等等,大家可以自己尝试。

import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('qy.jpg',1)
output = cv2.blur(img,(10,10))
res = np.hstack((img,output))
res = cv2.cvtColor(res, cv2.COLOR_BGR2RGB)
plt.imshow(res)     

可以明显看到,右边经过均值滤波之后的图片模糊了:
在这里插入图片描述

图像锐化

图像锐化可以消除图像中的噪声,提取图像信息中用来表征图像的一些变量,为图像识别提供基础。通常使用灰度差分法对图像的边缘、轮廓进行处理,将其凸显。

Sobel算子

Sobel算子是一种用于边缘检测的离散微分算子,它结合了高斯平滑和微分求导。该算子用于计算图像明暗程度近似值,根据图像边缘旁边明暗程度把该区域内超过某个数的特定点记为边缘。Sobel算子在Prewitt算子的基础上增加了权重的概念,认为相邻点的距离远近对当前像素点的影响是不同的,距离越近的像素点对应当前像素的影响越大,从而实现图像锐化并突出边缘轮廓。

img = cv2.imread('qy.jpg',1)
lenna_img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
grayImage = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#Sobel算子
x = cv2.Sobel(grayImage, cv2.CV_16S, 1, 0) #对x求一阶导
y = cv2.Sobel(grayImage, cv2.CV_16S, 0, 1) #对y求一阶导
absX = cv2.convertScaleAbs(x) 
absY = cv2.convertScaleAbs(y) 
Sobel = cv2.addWeighted(absX, 0.5, absY, 0.5, 0)
plt.imshow(img)  
plt.imshow(Sobel , 'gray')  

锐化之后的效果如右图(是不是感觉有点像素描):
在这里插入图片描述

写在最后

图像处理一些最最最基础的分享到此为止。本人才疏学浅,如果有错误或者理解不到位的地方请指正

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值