我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python实现图像增强

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python实现图像增强

本文实例为大家分享了Python实现图像增强的具体代码,供大家参考,具体内容如下

题目描述:对于下面这幅图像(图 1),请问可以通过那些图像增强的手段,达到改善视觉效果的目的?请显示处理结果,并附简要处理流程说明。

图 1 原图 

常用的图像增强方法有以下几种:

1.提高对比度

采用了线性函数对图像的灰度值进行变换。

2.Gamma校正

采用了非线性函数(指数函数)对图像的灰度值进行变换。

3.直方图均衡化

将原始图像的直方图通过积分概率密度函数转化为概率密度为1(理想情况)的图像,从而达到提高对比度的作用。直方图均衡化的实质也是一种特定区域的展宽,但是会导致整个图像向亮的区域变换。当原始图像给定时,对应的直方图均衡化的效果也相应的确定了。

4.直方图规定化

针对直方图均衡化的存在的一些问题,将原始图像的直方图转化为规定的直方图的形式。一般目标图像的直方图的确定需要参考原始图像的直方图,并利用多高斯函数得到。

5. 中值、均值滤波器

均值滤波方法:对待处理的当前像素,选择一个模板,该模板为其邻近的若干个像素组成,用模板的均值来替代原像素的值的方法。

中值滤波方法:对待处理的当前像素,选择一个模板,该模板为其邻近的若干个像素组成,对模板的像素由小到大进行排序,再用模板的中值来替代原像素的值的方法。

从图像中我们可以看出,该图片带有很多椒盐噪声,并且图像有些暗,于是我们选择中值滤波方法对图片进行处理(中值滤波对椒盐噪声具有较好效果),并提高对比度和亮度。

处理流程:

第一步:采用中值滤波方法对图像进行处理,处理后,结果如图2所示:

图2 中值滤波

第二步:Gamma校正,处理后,结果如图3所示:

图3 Gamma校正

第三步:提升对比度,亮度,处理后,结果如图4所示:

图4 对比度、亮度提升

最后输出对比图,如图5所示:

图5 效果对比图 

Python代码:

#author:lph
#funtion:image enhance
 
import cv2
import numpy as np
from tkinter import *
from skimage import filters,exposure
import matplotlib.pyplot as plt
from skimage.morphology import disk
from matplotlib.font_manager import FontProperties
#读入图片
im = cv2.imread('./image/image.png',0)
im_copy = cv2.imread('./image/image.png',0)
#如果图片为空,返回错误信息,并终止程序
if im is None:
    print("图片打开失败!")
    exit()
#中值滤波去噪
medStep = 3 # 设置为3*3的滤波器
def m_filter(x, y, step):
    """中值滤波函数"""
    sum_s=[] # 定义空数组
    for k in range(-int(step/2),int(step/2)+1):
        for m in range(-int(step/2),int(step/2)+1):
            sum_s.append(im[x+k][y+m]) # 把模块的像素添加到空数组
    sum_s.sort() # 对模板的像素由小到大进行排序
    return sum_s[(int(step*step/2)+1)]
for i in range(int(medStep/2),im.shape[0]-int(medStep/2)):
    for j in range(int(medStep/2),im.shape[1]-int(medStep/2)):
        im_copy[i][j] = m_filter(i, j, medStep) # 用模板的中值来替代原像素的值
cv2.imshow("Median",im_copy)
#Gamma校正
img3 = exposure.adjust_gamma(im_copy,1.05)
cv2.imshow("Gamma", img3)
#对比度、亮度增强
def Contrast_and_Brightness(alpha,beta,img):
    """使用公式f(x)=α.g(x)+β"""
    #α调节对比度,β调节亮度
    blank = np.zeros(img.shape,img.dtype)#创建图片类型的零矩阵
    dst = cv2.addWeighted(img,alpha,blank,1-alpha,beta)#图像混合加权
    return dst
img4 = Contrast_and_Brightness(1.1,30,img3)
cv2.imshow("Contrast", img4)
#创建一个窗口
plt.figure('对比图',figsize=(7,5))
# 中文字体设置
font = FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=14) #新宋体
#显示原图
plt.subplot(121) #子图1
#显示原图,设置标题和字体
plt.imshow(im,plt.cm.gray), plt.title('处理前图片', fontproperties = font)
 
#显示处理过的图像
plt.subplot(122) #子图2
#显示处理后的图,设置标题和字体
plt.imshow(img4,plt.cm.gray), plt.title('处理后图片', fontproperties = font)
plt.show()
# 销毁所有窗口
cv2.destroyAllWindows()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python实现图像增强

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

pytorch transforms图像增强怎么实现

这篇文章主要介绍“pytorch transforms图像增强怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“pytorch transforms图像增强怎么实现”文章能帮助大家解决问题。一、
2023-07-05

pytorch transforms图像增强实现方法

这篇文章主要介绍了pytorch transforms图像增强的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-05-14

opencv-python图像增强解读

这篇文章主要介绍了opencv-python图像增强解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-05-19

Python图像增强imgaug详解

Imgaug是一个开源python包,可让你在机器学习实验中增强图像,它适用于各种增强技术,它有一个简单而强大的界面,可以增强图像、地标、边界框、热图和分割图,这篇文章主要介绍了Python图像增强imgaug,需要的朋友可以参考下
2022-11-16

如何使用OpenCV实现图像增强

本篇内容介绍了“如何使用OpenCV实现图像增强”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!本期将介绍如何通过图像处理从低分辨率/模糊/低
2023-06-20

Python基于域相关实现图像增强的方法是什么

这篇文章主要讲解了“Python基于域相关实现图像增强的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python基于域相关实现图像增强的方法是什么”吧!介绍当在图像上训练深度神经
2023-06-26

Python怎么实现视频画质增强

本文小编为大家详细介绍“Python怎么实现视频画质增强”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python怎么实现视频画质增强”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。原理不知道大家小时候有没有玩过
2023-06-30

Python图像处理之图像增广算法详解

图像增广算法在计算机视觉领域扮演着至关重要的角色,本文将着重介绍图像增广算法中的三个关键方面:图像旋转、图像亮度调整以及图像裁剪与拼接,感兴趣的可以了解一下
2023-05-20

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录