数字图像处理-小波域维纳滤波

问题描述

编程作业:
以 lena 图像为例,编程实现小波域维纳滤波
在这里插入图片描述

编程实现:

step1: 导入图片
在这里插入图片描述
step2: 构造添加噪声的函数得到有噪声的图片

def get_noise(img, sigma):
    row, col = img.shape
    noise = np.random.randn(row,col)*sigma
    img_noise = img + noise
    img_noise = np.where(img_noise <= 0, 0, img_noise)
    img_noise = np.where(img_noise > 255, 255, img_noise)
    return np.uint8(img_noise)

噪声方差取值为 10,得到的噪声图片如下所示
在这里插入图片描述
step3: 构造维纳滤波的方差估计函数,其公式为:
在这里插入图片描述

def wiener_filter(img,HH):
    std_noise = np.median(np.abs(HH))/0.6745
    sigma_noise = std_noise**2
    sigma_img = (np.sum(img*img)-sigma_noise)/(img.shape[0]*img.shape[1])
    img_no_noise = sigma_img/(sigma_img+sigma_noise)*img
    return img_no_noise

step4: 由于小波域变换后的维纳滤波是一个递归过程,LL(低频分量)要不断的被分割为多尺度,又要被反变换回图片。故将小波域的变换和反变换过程写到一个函数里面,进行递归过程。采用的 bior4.4 小波基。

def mutial_dwt2(img, index):
    img = pywt.dwt2(img, 'bior4.4')
    LL, (LH, HL, HH) = img
    LH = wiener_filter(LH, HH)
    HL = wiener_filter(HL, HH)
    HH = wiener_filter(HH, HH)
    if index > 1:
        LL = mutial_dwt2(LL, index-1)
        row, col = LL.shape
        #小波重构可能会改变矩阵维数,进行统一
        d1 = row - HH.shape[0]
        d2 = col - HH.shape[1]
        if d1 > 0 or d2 > 0:
            d1 = row - np.arange(d1) - 1
            d2 = col - np.arange(d2) - 1
            LL = np.delete(LL, d1, axis=0)
            LL = np.delete(LL, d2, axis=1)
    img1 = pywt.idwt2((LL, (LH, HL, HH)), 'bior4.4')
    return img1

step5: 运行函数,其中分解和重构次数为 5,得到的去燥图片如下
在这里插入图片描述
step6: 图片对比,由于噪声值较小,所以进行了归一化显示
在这里插入图片描述
从结果可以看出,去出了不少的噪声,已经能看出原图像的大概轮廓。

运行说明:

环境
Numpy == 1.19.2
OpenCV-python == 4.4.0.44
PyWavelets == 1.1.1
全代码

import pywt
import cv2
import numpy as np
def normalization(img):
    img = (img - np.min(img))/(np.max(img)-np.min(img))
    return img

def get_noise(img, sigma):
    row, col = img.shape
    noise = np.random.randn(row,col)*sigma
    img_noise = img + noise
    img_noise = np.where(img_noise <= 0, 0, img_noise)
    img_noise = np.where(img_noise > 255, 255, img_noise)
    return np.uint8(img_noise)


def wiener_filter(img,HH):
    std_noise = np.median(np.abs(HH))/0.6745
    sigma_noise = std_noise**2
    sigma_img = (np.sum(img*img)-sigma_noise)/(img.shape[0]*img.shape[1])
    img_no_noise = sigma_img/(sigma_img+sigma_noise)*img
    return img_no_noise


def mutial_dwt2(img, index):
    img = pywt.dwt2(img, 'bior4.4')
    LL, (LH, HL, HH) = img
    LH = wiener_filter(LH, HH)
    HL = wiener_filter(HL, HH)
    HH = wiener_filter(HH, HH)
    if index > 1:
        LL = mutial_dwt2(LL, index-1)
        row, col = LL.shape
        #小波重构可能会改变矩阵维数,进行统一
        d1 = row - HH.shape[0]
        d2 = col - HH.shape[1]
        if d1 > 0 or d2 > 0:
            d1 = row - np.arange(d1) - 1
            d2 = col - np.arange(d2) - 1
            LL = np.delete(LL, d1, axis=0)
            LL = np.delete(LL, d2, axis=1)
    img1 = pywt.idwt2((LL, (LH, HL, HH)), 'bior4.4')
    return img1



if __name__ == '__main__':
    img = cv2.imread('lena512color.tiff',cv2.IMREAD_GRAYSCALE)
    cv2.imshow('original', img)
    img_ = get_noise(img, 10)
    cv2.imshow('noise', img_)
    img1 = mutial_dwt2(img_, 5)
    img1 = np.where(img1 < 0, 0, img1)
    img1 = np.where(img1 > 255, 255, img1)
    img1 = np.uint8(img1)
    cv2.imshow('qz', img1)
    cv2.imshow('o_n', normalization(np.uint8(np.abs(img_.astype('int16')-img.astype('int16')))))
    cv2.imshow('o_q', normalization(np.uint8(np.abs(img1.astype('int16') - img.astype('int16')))))
    cv2.waitKey(0)

  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
小波分析及其在数字图像处理中的应用 作 者: 朱希安,曹林 编著 出版时间: 2012 内容简介   《小波分析及其在数字图像处理中的应用》首先在理论上阐明小波分析的特点,以正交小波和双正交小波为重点叙述理论原理、构造方法,多分辨分析的概念以及:Mallat算法;其次,在理论上将小波变换与傅里叶变换和Gabor变换进行了对比,还详细研究了嵌入式零树小波编码、多级树集合分裂编码的原理和特点。除此之外,本书采用实例说明小波变换在图像压缩中的应用、小波变换在数字水印中的应用、Gabor小波在人脸识别中的应用、小波树在人脸识别中的应用、Gabor 小波在纹理图像分割中的应用;同时包括基于混沌和幻方置乱的小波数字水印、扩频数字水印、基于混沌加密和Arnold变换的隐性数字、基于 Arnold变换的小波半脆弱数字水印等新的水印算法。《小波分析及其在数字图像处理中的应用》可供在信号处理、图像处理等领从事科学研究的广大科技工作者参考,也可以作为高年级本科生和研究生有关课程的教材或教学参考书。 目录 第1章 绪论 1.1 背景 1.2 小波分析的国内外研究现状 1.2.1 小波分析的发展简史 1.2.2 小波研究的国内外现状 1.3 主要内容 本章参考文献 第2章 傅里叶变换、Gabor变换和小波变换的对比分析 2.1 傅里叶变换 2.2 Gabor变换 2.2.1 高斯函数的特性 2.2.2 高斯函数的傅里叶变换特性 2.2.3 测不准原理 2.3 小波变换 2.3.1 小波变换的定义 2.3.2 小波的时频窗 2.4 Gabor变换与小波变换的对比 2.5 本章小结 本章参考文献 第3章 小波变换的理论研究 3.1 小波变换的离散化 3.1.1 连续小波变换离散化满足的条件 3.1.2 二进小波的稳定条件 3.1.3 二进小波变换和重构 3.1.4 稳定条件的意义 3.2 小波框架 3.2.1 小波框架的物理意义 3.2.2 紧框架和完备标准正交基的关系 3.3 R基和R小波 3.3.1 R基的定义 3.3.2 R基和框架的关系 3.3.3 小波分析中的R基 3.3.4 R小波 3.4 多尺度分析和双尺度方程 3.4.1 多尺度分析 3.4.2 正交MRA的物理意义 3.4.3 尺度函数(t)的双尺度方程 3.4.4 小波函数(t)的双尺度方程 3.5 正交小波 3.5.1 正交尺度函数和小波所满足的条件 3.5.2 正交滤波器H()和G()所满足的关系 3.5.3 滤波器系数所满足的关系式 3.5.4 Mallat算法 3.5.5 紧支集正交小波的构造 3.6 紧支集双正交小波 3.7 函数的正则性和消失矩 3.8 本章小结 本章参考文献 第4章 小波变换在图像压缩中的应用 4.1 图像压缩方法简介 4.1.1 图像压缩方法分类 4.1.2 统计编码 4.1.3 预测编码 4.1.4 变换编码 4.1.5 混合编码 4.2 空间太阳望远镜在轨图像压缩需求 4.2.1 空间太阳望远镜主要技术指标 4.2.2 SST装载的科学仪器 4.2.3 SST数据处理系统 4.2.4 SST对数据传输分系统的需求 4.2.5 SST图像数据与传输的矛盾 4.2.6 SST图像在轨压缩需求 4.3 SST图像的压缩方案选取 4.3.1 SST图像的压缩编码方法选取 4.3.2 小波基的选取原则 4.3.3 小波基选取影响因素分析 4.4 二维小波的构造 4.4.1 构造方法 4.4.2 图像分解过程 4.5 SST图像压缩过程分析 4.5.1 压缩过程概述 4.5.2 小波变换和逆变换过程 4.5.3 延拓方法的选取 4.6 嵌入式小波零树压缩算法研究 4.6.1 嵌入式小波零树编码的特点 4.6.2 嵌入式小波零树编码概貌 4.6.3 嵌入式小波零树编码原理 4.6.4 比特平面的重要性顺序 4.6.5 零树编码过程举例 4.6.6 嵌入式小波零树压缩算法实现 4.7 基于集合划分的等级树压缩算法研究 4.7.1 基于集合划分的等级树算法的基本思想 4.7.2 集合的划分 4.7.3 SPIHT压缩算法实现 4.8 本章小结 本章参考文献 第5章 图像的压缩质量评价方法和应用实例 5.1 图像压缩质量的评价方法 5.1.1 压缩信噪比 5.1.2 压缩比 5.1.3 主观评价方法 5.2 不同类型小波基压缩效果分析 5.2.1 SST图像压缩结果 5.2.2 SST图像压缩后的质量分析 5.2.3 SST图像压缩后的主观质量评价 5.3 小波分解层次的影响 5.4 采用阈值处理方法的图像压缩实例 5.4.1 不同小波基的能量集中度比较 5.4.2 不同阈值的压缩结果 5.4.3 结果分析 5.4.4 不同变换方法的压缩效果 5.4.5 小波变换分解层次对图像压缩效果的影响及分析 5.5 小波变换在信号消噪和突变点检测中的应用 5.5.1 小波分析用于信号的消噪 5.5.2 小波分析用于突变信号检测的原理 5.5.3 小波分析用于信号突变点检测的实例 5.5.4 小波变换图像去噪自适应阈值技术研究 5.6 本章小结 本章参考文献 第6章 小波变换在数字水印中的应用 6.1 小波分析在数字水印中的应用概述 6.2 数字水印技术的历史、现状和发展 6.3 数字水印理论 6.3.1 数字水印的基本原理 6.3.2 数字水印的基本框架 6.3.3 数字水印的基本特性 6.3.4 数字水印的分类 6.4 数字水印的典型算法 6.4.1 空间数字水印 6.4.2 变换数字水印 6.4.3 数字水印的攻击 6.5 混沌理论与置乱技术概述 6.5.1 混沌的发展 6.5.2 混沌的定义 6.5.3 混沌的特征 6.5.4 典型的混沌模型 6.5.5 混沌在数字水印中的应用 6.5.6 数字图像置乱技术 6.6 基于小波变换的数字水印应用实例 6.6.1 小波变换与人类视觉模型 6.6.2 基于混沌加密与Arnold变换的水印生成算法 6.7 基于混沌和幻方置乱的小波数字水印 6.7.1 基于幻方思想的混沌置乱矩阵的生成 6.7.2 基于混沌加密和置乱的水印生成算法 6.7.3 数字水印嵌入与提取 6.7.4 实验结果及分析 6.8 基于小波变换的扩频数字水印嵌入算法研究 6.8.1 概述 6.8.2 扩频水印嵌入算法 6.8.3 算法实验结果 6.9 基于混沌加密和Arnold变换的隐性数字水印算法研究 6.9.1 数字图像水印的混沌加密 6.9.2 数字水印的嵌入方法和原理 6.9.3 实验结果与分析 6.10 基于Arnold变换的小波半脆弱数字水印算法 6.10.1 水印嵌入的方法和原理 6.10.2 实验结果与分析 6.10.3 结果和讨论 6.11 本章小结 本章参考文献 第7章 Gabor小波在人脸 识别中的应用研究 7.1 人脸识别典型方法 7.1.1 子空间方法 7.1.2 基于连接机制的人脸识别方法 7.1.3 隐马尔可夫模型识别方法 7.1.4 基于贝叶斯的人脸识别方法 7.1.5 基于流形的人脸识别 7.2 隐马尔可夫模型 7.2.1 隐马尔可夫模型介绍 7.2.2 隐马尔可夫模型的三个基本问题 7.2.3 隐马尔可夫模型算法实现中的问题 7.3 基于Gabor脸和HMM的人脸识别方法 7.3.1 研究背景 7.3.2 Gabor小波概述 7.3.3 利用Gabor小波进行特征提取 7.3.4 主元分析降维 7.3.5 HMM人脸识别 7.3.6 算法复杂度分析 7.3.7 实验结果及分析 7.3.8 结论 7.4 基于Gabor小波、ICA和HMM的人脸识别方法 7.4.1 独立元分析降维 7.4.2 实验结果及分析 7.4.3 结论 7.5 本章小结 本章参考文献 第8章 小波树在人脸识别中的应用研究 8.1 基于小波树和HMM的人脸识别算法 8.1.1 人脸图像二维离散小波变换 8.1.2 低频小波树 8.1.3 实验结果及分析 8.1.4 利用ICA降维 8.1.5 结论 8.2 基于小波树和Fisher线性鉴别的人脸识别算法 8.2.1 Fisher 线性鉴别 8.2.2 实验结果及分析 8.2.3 结论 8.3 基于小波树和二维主元分析的人脸识别算法 8.3.1 二维主元分析 8.3.2 分类 8.3.3 实验结果及分析 8.3.4 结论 8.4 基于小波树和非参数鉴别分析的人脸识别算法 8.4.1 非参数鉴别分析 8.4.2 实验结果及分析 8.4.3 结论 8.5 本章小结 本章参考文献 第9章 Gabor小波在纹理图像分割中的应用研究 9.1 图像分割概述 9.2 基本原理 9.2.1 特征提取 9.2.2 二维滑动矩形窗傅里叶变换的快速递推算法 9.2.3 能量函数表示形式 9.3 数值实现 9.4 性能分析和实验结果 9.5 本章小结 本章参考文献 展望

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值