资源简介
BM3D在传统图像去噪方面效果是最好的,此代码需要安装opencv库

代码片段和文件信息
# -*- coding: utf-8 -*-
“““
*BM3D算法简单实现主要程序部分
*创建于2016.9.13
*作者:lmp31
“““
import cv2
import PSNR
import numpy
cv2.setUseOptimized(True)
# Parameters initialization
sigma = 25
Threshold_Hard3D = 2.7*sigma # Threshold for Hard Thresholding
First_Match_threshold = 2500 # 用于计算block之间相似度的阈值
Step1_max_matched_cnt = 16 # 组最大匹配的块数
Step1_Blk_Size = 8 # block_Size即块的大小,8*8
Step1_Blk_Step = 3 # Rather than sliding by one pixel to every next reference block use a step of Nstep pixels in both horizontal and vertical directions.
Step1_Search_Step = 3 # 块的搜索step
Step1_Search_Window = 39 # Search for candidate matching blocks in a local neighborhood of restricted size NS*NS centered
Second_Match_threshold = 400 # 用于计算block之间相似度的阈值
Step2_max_matched_cnt = 32
Step2_Blk_Size = 8
Step2_Blk_Step = 3
Step2_Search_Step = 3
Step2_Search_Window = 39
Beta_Kaiser = 2.0
def init(img _blk_size _Beta_Kaiser):
“““该函数用于初始化,返回用于记录过滤后图像以及权重的数组还有构造凯撒窗“““
m_shape = img.shape
m_img = numpy.matrix(numpy.zeros(m_shape dtype=float))
m_wight = numpy.matrix(numpy.zeros(m_shape dtype=float))
K = numpy.matrix(numpy.kaiser(_blk_size _Beta_Kaiser))
m_Kaiser = numpy.array(K.T * K) # 构造一个凯撒窗
return m_img m_wight m_Kaiser
def Locate_blk(i j blk_step block_Size width height):
‘‘‘该函数用于保证当前的blk不超出图像范围‘‘‘
if i*blk_step+block_Size < width:
point_x = i*blk_step
else:
point_x = width - block_Size
if j*blk_step+block_Size < height:
point_y = j*blk_step
else:
point_y = height - block_Size
m_blockPoint = numpy.array((point_x point_y) dtype=int) # 当前参考图像的顶点
return m_blockPoint
def Define_SearchWindow(_noisyImg _BlockPoint _WindowSize Blk_Size):
“““该函数返回一个二元组(xy)用以界定_Search_Window顶点坐标“““
point_x = _BlockPoint[0] # 当前坐标
point_y = _BlockPoint[1] # 当前坐标
# 获得SearchWindow四个顶点的坐标
LX = point_x+Blk_Size/2-_WindowSize/2 # 左上x
LY = point_y+Blk_Size/2-_WindowSize/2 # 左上y
RX = LX+_WindowSize # 右下x
RY = LY+_WindowSize # 右下y
# 判断一下是否越界
if LX < 0: LX = 0
elif RX > _noisyImg.shape[0]: LX = _noisyImg.shape[0]-_WindowSize
if LY < 0: LY = 0
elif RY > _noisyImg.shape[0]: LY = _noisyImg.shape[0]-_WindowSize
return numpy.array((LX LY) dtype=int)
def Step1_fast_match(_noisyImg _BlockPoint):
“““快速匹配“““
‘‘‘
*返回邻域内寻找和当前_block相似度最高的几个block返回的数组中包含本身
*_noisyImg:噪声图像
*_BlockPoint:当前block的坐标及大小
‘‘‘
(present_x present_y) = _BlockPoint # 当前坐标
Blk_Size = Step1_Blk_Size
Search_Step = Step1_Search_Step
Threshold = First_Match_threshold
max_matched = Step1_max_matched_cnt
Window_size = Step1_Search_Window
blk_positions = numpy.zeros((max_matched 2) dtype=int) # 用于记录相似blk的位置
Final_similar_blocks = numpy.zer
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 16316 2017-09-13 16:12 BM3D-Denoise-master\BM3D.py
文件 694 2017-09-13 16:12 BM3D-Denoise-master\PSNR.py
文件 631 2017-09-13 16:12 BM3D-Denoise-master\README.md
目录 0 2018-06-21 20:17 BM3D-Denoise-master\
- 上一篇:insert_test_data.py
- 下一篇:stopwords,停用词
相关资源
- python+ selenium教程
- PycURL(Windows7/Win32)Python2.7安装包 P
- 英文原版-Scientific Computing with Python
- 7.图像风格迁移 基于深度学习 pyt
- 基于Python的学生管理系统
- A Byte of Python(简明Python教程)(第
- Python实例174946
- Python 人脸识别
- Python 人事管理系统
- 基于python-flask的个人博客系统
- 计算机视觉应用开发流程
- python 调用sftp断点续传文件
- python socket游戏
- 基于Python爬虫爬取天气预报信息
- python函数编程和讲解
- Python开发的个人博客
- 基于python的三层神经网络模型搭建
- python实现自动操作windows应用
- python人脸识别(opencv)
- python 绘图(方形、线条、圆形)
- python疫情卡UN管控
- python 连连看小游戏源码
- 基于PyQt5的视频播放器设计
- 一个简单的python爬虫
- csv文件行列转换python实现代码
- Python操作Mysql教程手册
- Python Machine Learning Case Studies
- python获取硬件信息
- 量化交易(附python常见函数的使用方
- python 名字用字排行
评论
共有 条评论