资源简介
python编写的ROF图像降噪程序,代码全面,亲测可行,降噪效果优与一般的图像降噪方法,对图像处理研究者有一定帮助。
代码片段和文件信息
from numpy import *
from pylab import *
from PIL import Image
def denoise(imU_inittau=0.5tv_weight=30max_iteration=10):
#imU_init为含噪音的图像tau与步长有关,tv_weight为全变差所占的权重λ,max_iteration为最大的迭代次数
mn = im.shape
U = U_init
Px = im
Py = im
count = 0
while(count Uold = U
GradUx = roll(U-1axis=1)-U #这里就是差分ux,如果对axis的选取有疑惑,本文后边提供了一个链接
GradUy = roll(U1axis = 0)-U #这里就是差分uy#roll()函数,其实就相当于将矩阵移动,类似于无界模式的贪吃蛇,在最边缘位置的数会移动到对面
NormNew = maximum(1sqrt(GradUx**2+GradUy**2))#为了防止出现分母为0
Px = GradUx/NormNew
Py = GradUy/NormNew
RxPx = roll(Px-1axis=1)
RyPy = roll(Py-1axis=0)
DivP = (RxPx-Px)+(RyPy-Py)
step = tau*(exp(-count*2/(max_iteration))+0.1)#有点模拟退火的意思
U = Uold - step*((Uold-im)+tv_weight*DivP) #梯度下降
error = linalg.norm(U-Uold)/sqrt(n*m)
if (count%10==0):
print(‘step:‘step)
print(‘error:‘error)
count+=1
return UU-U_init
if __name__==‘__main__‘:
from numpy import random
from scipy.ndimage import filters
im = zeros((500500))#建立一个图形,外黑,中灰,内白
im[100:400100:400] = 128
im[200:300200:300] = 255
noise = 30 *random.standard_normal((500500)) #噪声
im = im + noise
UT = denoise(imimmax_iteration=10tau=0.5)
gray()
subplot(121)
imshow(im)
subplot(122)
imshow(U)
print(corrcoef(T.flatten()noise.flatten()))#相关度检验
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1834 2019-03-02 09:30 rofDeNoise.py
相关资源
- Beginning Python: From Novice to Professional
- python利用opencv进行相机标定(教程)
- OPENCV入门书籍:opencv3机器视觉Python语
- LBPH算法人脸识别代码.rar
- simplecv实用机器视觉+OpenCV-Python-Totur
- opencv3机器视觉python语言实现.zip
- Python基础教程 Beginning Python From Novic
- opemv4-0v7725.rar
- python-opencv 机器视觉 质心,形心 坐标
- Beginning Python From Novice to Professional(
- OpenMV视觉识别 舵机云台颜色跟踪
评论
共有 条评论