资源简介
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,停用词
相关资源
- insert_test_data.py
- 栅格投影转换.py
- IDW插值批处理
- 神经网络模型python模板
- python3程序设计习题答案第3版
- python核心基础.txt
- 尚硅谷2018年Python视频
- 基于用户最近邻模型的协同过滤算法
- python自写的车牌识别小程序,完全自
- python面试笔记培训就业必回
- Django+Python搭建的购物网站
- python利用scipy的optimize实现非线性最小
- Python简单网页爬虫
- 自动发布mxd服务
- Python爬虫每日抓取必应壁纸
- python-igraph mac os 一键安装包
- python+opencv鼠标选择目标自动跟踪,
- Prometheus数据API导出Python脚本(export
- Programming Python 4th Edition 中文扫描版完
- python+django从mongo读取数据和图片展示
- 剑指offer 66编程题Python
- 工训物流小车颜色及二维码识别
- PyQt4中文教程chm版
- Python 垃圾分类查询
- python实现数字水印添加与提取及鲁棒
- python 写的一个json转csv文件的脚本
- RGSS3A解包器Python版
- python多人聊天服务器 socket
- Python 3网络爬虫开发实战
- 线性规划-单纯形法-窗体实现(pytho
评论
共有 条评论