计算机视觉实操之图像处理

  • 一、问题描述
  • 二、效果图
  • 三、代码附录
  • 四、相关链接

一、问题描述

向图片中分别加入椒盐噪声、高斯噪声,使用四种不同的滤波器观察图片的处理效果(算术均值滤波、几何均值滤波 、谐波均值滤波 、逆谐波均值滤波)

二、效果图

三、代码附录

import cv2
import numpy as np
import matplotlib.pyplot as plt
import scipy
import scipy.stats
import randomdef GaussieNoisy(image,sigma):# 高斯噪声img = image.astype(np.int16)  # 此步是为了避免像素点小于0,大于255的情况mu = 0for i in range(img.shape[0]):for j in range(img.shape[1]):for k in range(img.shape[2]):img[i, j, k] = img[i, j, k] + random.gauss(mu=mu, sigma=sigma)img[img > 255] = 255img[img < 0] = 0img = img.astype(np.uint8)return imgdef spNoisy(image,s_vs_p = 0.5,amount = 0.004):# 椒盐噪声out = np.copy(image)num_salt = np.ceil(amount * image.size * s_vs_p)coords = [np.random.randint(0, i - 1, int(num_salt)) for i in image.shape]out[tuple(coords)] = 1num_pepper = np.ceil(amount* image.size * (1. - s_vs_p))coords = [np.random.randint(0, i - 1, int(num_pepper)) for i in image.shape]out[tuple(coords)] = 0return outdef ArithmeticMeanAlogrithm(image):# 算术均值滤波new_image = np.zeros(image.shape)image = cv2.copyMakeBorder(image,1,1,1,1,cv2.BORDER_DEFAULT)for i in range(1,image.shape[0]-1):for j in range(1,image.shape[1]-1):new_image[i-1,j-1] = np.mean(image[i-1:i+2,j-1:j+2])new_image = (new_image-np.min(image))*(255/np.max(image))return new_image.astype(np.uint8)
def rgbArithmeticMean(image):r,g,b = cv2.split(image)r = ArithmeticMeanAlogrithm(r)g = ArithmeticMeanAlogrithm(g)b = ArithmeticMeanAlogrithm(b)return cv2.merge([r,g,b])def GeometricMeanOperator(roi):roi = roi.astype(np.float64)p = np.prod(roi)return p ** (1 / (roi.shape[0] * roi.shape[1]))
def GeometricMeanAlogrithm(image):# 几何均值滤波new_image = np.zeros(image.shape)image = cv2.copyMakeBorder(image, 1, 1, 1, 1, cv2.BORDER_DEFAULT)for i in range(1, image.shape[0] - 1):for j in range(1, image.shape[1] - 1):new_image[i - 1, j - 1] = GeometricMeanOperator(image[i - 1:i + 2, j - 1:j + 2])new_image = (new_image - np.min(image)) * (255 / np.max(image))return new_image.astype(np.uint8)
def rgbGemotriccMean(image):r,g,b = cv2.split(image)r = GeometricMeanAlogrithm(r)g = GeometricMeanAlogrithm(g)b = GeometricMeanAlogrithm(b)return cv2.merge([r,g,b])def HarmonicMeanOperator(roi):roi = roi.astype(np.float64)if 0 in roi:roi = 0else:roi = scipy.stats.hmean(roi.reshape(-1))return roi
def HarmonicMeanAlogrithm(image):# 谐波均值滤波new_image = np.zeros(image.shape)image = cv2.copyMakeBorder(image,1,1,1,1,cv2.BORDER_DEFAULT)for i in range(1,image.shape[0]-1):for j in range(1,image.shape[1]-1):new_image[i-1,j-1] =HarmonicMeanOperator(image[i-1:i+2,j-1:j+2])new_image = (new_image-np.min(image))*(255/np.max(image))return new_image.astype(np.uint8)
def rgbHarmonicMean(image):r,g,b = cv2.split(image)r = HarmonicMeanAlogrithm(r)g = HarmonicMeanAlogrithm(g)b = HarmonicMeanAlogrithm(b)return cv2.merge([r,g,b])def Contra_harmonicMeanOperator(roi,q):roi = roi.astype(np.float64)return np.mean((roi)**(q+1))/np.mean((roi)**(q))
def Contra_harmonicMeanAlogrithm(image,q):# 逆谐波均值滤波new_image = np.zeros(image.shape)image = cv2.copyMakeBorder(image,1,1,1,1,cv2.BORDER_DEFAULT)for i in range(1,image.shape[0]-1):for j in range(1,image.shape[1]-1):new_image[i-1,j-1] = Contra_harmonicMeanOperator(image[i-1:i+2,j-1:j+2],q)new_image = (new_image-np.min(image))*(255/np.max(image))return new_image.astype(np.uint8)
def rgbContra_harmonicMean(image,q):r,g,b = cv2.split(image)r = Contra_harmonicMeanAlogrithm(r,q)g = Contra_harmonicMeanAlogrithm(g,q)b = Contra_harmonicMeanAlogrithm(b,q)return cv2.merge([r,g,b])if __name__ == '__main__':house = cv2.imread("E:/pythontupian/6.jpg")house = cv2.resize(cv2.cvtColor(house, cv2.COLOR_BGR2RGB), (200, 200))plt.imshow(house)plt.axis("off")plt.title("Original Image")plt.show()   # 原图像flagN = input("请选择加入的噪声:\n""高斯噪声 -- 1\n""椒盐噪声 -- 2\n")if flagN == "1":GuassHouse = GaussieNoisy(house,18)plt.imshow(GuassHouse)plt.axis("off")plt.title("Gauss noise Image")plt.show()   # 加入高斯噪声后的图像elif flagN == "2":spHouse = spNoisy(house)plt.imshow(spHouse)plt.axis("off")plt.title("Salt And peper Image")plt.show()  # 加入椒盐噪声后的图像flagF = input("请选择滤波器:\n""算术均值滤波 -- a\n""几何均值滤波 -- b\n""谐波均值滤波 -- c\n""逆谐波均值滤波 -- d\n")if flagF == "a":if flagN == "1":plt.imshow(rgbArithmeticMean(GuassHouse))elif flagN == "2":plt.imshow(rgbArithmeticMean(spHouse))plt.title("Arithmetic Mean Filter")plt.show()  # Arithmetic Mean Filterelif flagF == "b":if flagN == "1":plt.imshow(rgbGemotriccMean(GuassHouse))elif flagN == "2":plt.imshow(rgbGemotriccMean(spHouse))plt.title("Geometric Mean Filter")plt.show()  # Geometric Mean Filterelif flagF == "c":if flagN == "1":plt.imshow(rgbHarmonicMean(GuassHouse))elif flagN == "2":plt.imshow(rgbHarmonicMean(spHouse))plt.title("Harmonic Mean Filter")plt.show()  # Harmonic Mean Filterelif flagF == "d":if flagN == "1":plt.imshow(rgbContra_harmonicMean(GuassHouse,2))elif flagN == "2":plt.imshow(rgbContra_harmonicMean(spHouse,2))plt.title("Contra-harmonic Mean Filter")plt.show()  # Contra-harmonic Mean Filter

四、相关链接

图像处理系列博客:

图像处理之维纳滤波还原图像、直方图均值化【附代码、亲测有效】

图像处理之仿真运动模糊复原【使用逆滤波、维纳滤波】

图像处理/人工智能/opencv之深入理解模板匹配算法

图像处理/计算机视觉/python环境下如何用滤波器、算法恢复图片,对图片去污【附代码】

图像处理/计算机视觉/python环境下/机器学习 之k近邻方法(KNN)、模板匹配算法对数据集的识别

图像处理/计算机视觉/python环境下/如何用四种不同滤波器处理噪声【附代码、亲测有效】

图像处理/计算机视觉/python环境下/如何用四种不同滤波器处理噪声【附代码、亲测有效】相关推荐

  1. 图像处理/计算机视觉/ python环境下如何用滤波器(/逆滤波/均值滤波/低通滤波/高通滤波)处理图片【附代码】

    计算机视觉滤波器实操 基础知识 一. 计算机视觉技术中常见的几种滤波器 二.滤波器相关知识 应用一:算术均值.几何均值.谐波逆谐波 一.问题分析 二.结果图 三.代码附录 应用二:维纳滤波,逆滤波 一 ...

  2. 图像处理/计算机视觉/python环境下如何用滤波器、算法恢复图片,对图片去污【附代码】

    图片修复.图片恢复 一.问题描述 二.效果图 三.代码附录 一.问题描述 利用算法处理受损受污染的图片,使其尽量复原 二.效果图 三.代码附录 去污算法一 import cv2 from matplo ...

  3. linux四种文件系统,Linux环境下常用的四种文件系统

    Linux环境下几种常用的文件系统 1.ext2 ext2是为解决ext文件系统的缺陷而设计的可扩展的.高性能的文件系统,又被称为二级扩展文件系统.它是Linux文件系统中使用最多的类型,并且在速度和 ...

  4. 关于Python环境下WindowsMac 升级pip的方法最佳实践(附pip常用命令)

    升级pip的最佳实践 升级pip有很多种方法,以下列举我使用的两种方法,并对它们的优缺点进行总结: Mac电脑中操作 使用pip install --user --upgrade pip命令升级pip ...

  5. python捷豹_图像处理基本工具——Python 环境下的 Pillow( PIL )

    由于笔者近期的研究课题与图像后处理有关,需要通过图像处理工具对图像进行变换和处理,进而生成合适的训练图像数据.该系列文章即主要记录笔者在不同的环境下进行图像处理时常用的工具和库.在 Python 环境 ...

  6. python环境下数据操作_数据分析环境搭建和Python基础知识

    搭建数据分析环境主要包括使用anaconda管理包和环境:使用Jupyter notebook将说明文本.数学方程.代码和可视化内容全部组合到一个易于共享的文档中.Python基础知识包括关键点(数据 ...

  7. Python环境下用中文做了个《王者荣耀》AI脚本

    <王者荣耀>AI最早的巅峰应该是在2018年 "AI(人工智能)"VS"人类明星战队" 以此为目标在python环境下开发了AI脚本自动打<王 ...

  8. python商品打折问题_基于Python环境下打折力度对营业额和利润率影响的研究

    龙源期刊网 http://www.qikan.com.cn 基于 Python 环境下打折力度对营业额和利 润率影响的研究 作者:吴生根 来源:<读天下> 2020 年第 01 期 摘 要 ...

  9. Python环境下使用pip2pi搭建属于自己的pip源

    这篇文章主要介绍了Python环境下搭建属于自己的pip源的教程,同时也附带讲解了修改pip源设定的方法,需要的朋友可以参考下 一.安装pip2pi工具: pip install pip2pi 或: ...

最新文章

  1. 2021年大数据常用语言Scala(十九):基础语法学习 iterator迭代器
  2. 一些有用的webservice
  3. 基于Nginx的LVS配置 提出curl 虚拟IP无响应解决办法!
  4. python可视化文本分析(1)—分析QQ班群聊天记录宏观
  5. 人工智能学习--知识图谱的关键技术及其智能应用
  6. html自动get,HTML Get
  7. Django笔记-5-视图
  8. elemntui icon 大小_自定义elementui中的图标
  9. Spring Boot开发之流水无情(二)
  10. Linux服务器安全防护十个方面
  11. 欢迎大家讨论一个关于界面显示的问题!!
  12. java jtextpane_java – 从JTextPane获取原始文本
  13. TCP/IP协议简单介绍
  14. Core Animation基础 1
  15. 初级算法15.有效的字母异位词
  16. 谷歌翻译退出中国市场?我们还有这个!
  17. 外贸企业出口退税流程/经验分享
  18. 248 中心对称数 III
  19. excel制作复合饼状图_如何在Excel中制作饼图
  20. html修改成透明色,在html2canvas中将透明颜色更改为白色

热门文章

  1. edusoho对接腾讯会议直播功能 直播结束自动转存阿里云视频点播
  2. Arduino应用笔记(一)利用蜂鸣器播放天空之城
  3. 1044. Lucky Tickets. Easy!
  4. 亚巴逊首页分类导航菜单触发区域控制原理窥视
  5. 使用sqoop将数据从hdfs中导入mysql时,卡在INFO mapreduce.Job: map 100% reduce 0%的解决办法
  6. 月活2.67亿的B站 UP主如何瓜分流量?
  7. 高斯激光光束重塑成 Donut 模式
  8. Mybatis基础(二)
  9. Pageoffice并发问题
  10. 【智能安防】人像态势识别及其在智能视频监控中的应用