阿齐兹的PyCV学习笔记——图像去噪
2018-03-03 17:06
267 查看
图像去噪
图像去噪是指在去除图像噪声的同时,尽可能保留图像的细节和结构ROF(Rudin-Osher-Fatemi)去噪模型:该模型使去噪后的图像像素值“平坦”变化,但在图像区域边缘像素值“跳跃”变化,使处理后的图像更平滑,同时保持图像边缘和结构信息
#coding:utf-8 from numpy import * def denoise(im, U_init, tolerance=0.1, tau=0.125, tv_weight=100): """使用A.Chambolle公式实现ROF去噪模型 输入:含有噪声的输入图像(灰度图像)、U的初始值、TV正则项权值、步长、停业条件 输出:去噪和去除纹理后的图像、纹理残留""" m,n = im.shape #噪声图像的大小 #初始化 U = U_init Px = im #对偶域的x分量 Py = im #对偶域的y分量 error = 1 while(error > tolerance): Uold = U #原始变量的梯度 GradUx = roll(U,-1,axis=1)-U #变量U梯度的x分量 GradUy = roll(U,-1,axis=0)-U #变量U梯度的y分量 #更新对偶变量 PxNew = Px + (tau/tv_weight)*GradUx PyNew = Py + (tau/tv_weight)*GradUy NormNew = maximum(1,sqrt(PxNew**2+PyNew**2)) Px = PxNew/NormNew #更新x变量 Py = PyNew/NormNew #更新y变量 #更新原始变量 RxPx = roll(Px,1,axis=1) #对x分量进行向右x轴平移 RyPy = roll(Py,1,axis=0) #对y分量进行向右y轴平移 DivP = (Px-RxPx)+(Py-RyPy) #对偶域的散度 U = im + tv_weight*DivP #更新原始变量 #更新误差 error = linalg.norm(U-Uold)/sqrt(n*m) return U,im-U #去噪后的图像和纹理残余
roll()方法可以在一个坐标轴上循环“滚动”数组中的元素值,计算领域元素的差异
linalg.norm()方法可以衡量两个数组之间的差异
实例一:
from numpy import * from numpy import random from scipy.ndimage import filters import rof #使用噪声创建合成图像 im = zeros((500,500)) im[100:400,100:400] = 128 im[200:300,200:300] = 255 im = im + 30*random.standard_normal((500,500)) U,T = rof.denoise(im,im) G = filters.gaussian_filter(im,10) #保存生成结果 from scipy.misc import imsave imsave('synth_rof.pdf',U) imsave('synth_gaussian.pdf',G)
效果图:
实例二:
from PIL import Image from pylab import * import rof im = array(Image.open('C:/Users/0AQZ0/Documents/exercisecode/Python/PyCV/Images/001.jpg').convert('L')) U,T = rof.denoise(im,im) figure() gray() imshow(U) axis('equal') axis('off') show()
效果图:
高斯模糊——
ROF去噪——
相关文章推荐
- 阿齐兹的PyCV学习笔记——匹配地理标记图像
- 阿齐兹的PyCV学习笔记——SIFT(尺度不变特征变换)
- 阿齐兹的PyCV学习笔记——PIL、Matplotlib
- 阿齐兹的PyCV学习笔记——Harris角点检测器
- 阿齐兹的PyCV学习笔记——SciPy
- OpenCV学习笔记(14)创建Trackbar & 图像对比度、亮度值调整
- OpenCV 2 学习笔记(3): 一个简单的opencv程序:在Console上显示图像
- IPhone学习笔记三-----图像视图和文本字段
- 【数字图像处理学习笔记之四】图像腐蚀、膨胀
- OpenCV学习笔记:如何扫描图像、利用查找表和计时
- CS231n课程图像分类学习笔记
- OPENCV学习笔记1-6_图像上绘图
- OPENCV学习笔记1-8_选取图像局部区域
- 图像坐标:我想和世界坐标谈谈(A) 【计算机视觉学习笔记--双目视觉几何框架系列】
- 我的OPENCV学习笔记-图像混合
- 【数字图像处理学习笔记之五】形态学开闭运算
- Open CV 学习笔记:访问图像中像素的几种方法
- 频域图像增强(学习笔记)
- opencv学习笔记-入门(7)单通道的图像数据访问
- 七月算法深度学习 第三期 学习笔记-第六节 图像风格转换