精华内容
下载资源
问答
  • 概述如何执行图像去模糊。通过FFT反卷积以及为什么这是个坏主意一种执行反卷积的替代方法但是首先,一些符号:我用I表示图像,用K表示卷积核。 I * K是图像I与内核K的卷积。 F (I)是图像I的(n维)傅立叶变换, F (K)...

    不幸的是,您寻求解决的问题比您预期的要困难。 让我分四个部分进行说明。 第一部分假定您对傅立叶变换感到满意。

    为什么您不能通过简单的反卷积来解决此问题。

    概述如何执行图像去模糊。

    通过FFT反卷积以及为什么这是个坏主意

    一种执行反卷积的替代方法

    但是首先,一些符号:

    我用I表示图像,用K表示卷积核。 I * K是图像I与内核K的卷积。 F (I)是图像I的(n维)傅立叶变换, F (K)是卷积核K的傅立叶变换(也称为点扩展函数或PSF)。 同样, Fi是傅立叶逆变换。

    为什么您不能通过简单的反卷积来解决此问题:

    当你说我们能恢复模糊图像磅你是正确= I * K除以傅立叶变换K的傅立叶变换Ib的。 但是,镜头模糊不是卷积模糊操作。 这是一种改进的卷积模糊运算,其中模糊核K取决于与您拍摄的物体的距离。 因此,内核随像素变化。

    您可能会认为这与图像无关,因为您已经在图像位置测量了正确的内核。 但是,情况可能并非如此,因为图像的较远部分会影响图像的较近部分。 解决此问题的一种方法是裁剪图像,以便仅可见纸。

    为什么通过FFT解卷积是一个坏主意:

    卷积定理指出I * K = Fi ( F (I) F (K)) 。 该定理导致一个合理的假设,即如果我们有一个图像, Ib = I * K被卷积核K模糊,那么我们可以通过计算I =( F (Ib)/ F (K))来恢复去模糊的图像。 。

    在我们探讨为什么这不是一个好主意之前,我想对卷积定理的含义有一些直觉。 当我们将图像与内核卷积时,这与获取图像的频率分量并将其逐元素乘以内核的频率分量相同。

    现在,让我解释一下为什么很难用FFT对图像进行卷积处理。 默认情况下,模糊会删除高频信息。 因此, K的高频必须接近零。 原因是I的高频信息在模糊时会丢失-因此, Ib的高频分量必须趋于零。 为此, K的高频分量也必须趋近于零。

    由于K的高频分量几乎为零,因此我们发现,当我们对FFT解卷积时, Ib的高频分量被显着放大(因为我们几乎被零除)。 在无噪声的情况下这不是问题。

    但是,在嘈杂的情况下,这是一个问题。 其原因是,按照定义,噪声就是高频信息。 因此,当我们尝试对Ib进行反卷积时,噪声几乎被无限放大。 这就是通过FFT进行反卷积不是一个好主意的原因。

    此外,您需要考虑基于FFT的卷积算法如何处理边界条件。 通常,当我们对图像进行卷积时,分辨率会有所降低。 这是不必要的行为,因此我们引入了边界条件,这些条件指定了图像外部像素的像素值。 这样的边界条件的例子是

    图像外部的像素与图像内部最近的像素具有相同的值

    图像外部的像素具有恒定值(例如0)

    该图像是周期信号的一部分,因此最上面一行上方的像素行等于最下面一行像素。

    最终边界条件通常对一维信号有意义。 但是,对于图像来说,这毫无意义。 不幸的是,卷积定理规定使用周期性边界条件。

    除此之外,似乎基于FFT的反演方法比迭代方法(例如,梯度下降和FISTA)对错误的内核更加敏感。

    一种执行反卷积的替代方法

    由于所有图像都嘈杂,因此看起来似乎已经失去了所有希望,而去卷积将增加噪点。 但是,事实并非如此,因为我们有迭代方法来执行去卷积。 首先让我向您展示最简单的迭代方法。

    让|| I ||²是所有I像素的平方和。 解方程

    Ib = I * K

    关于I ,则相当于解决以下优化问题:

    min L(I)= min || I * K-Ib ||²

    关于我 。 这可以使用梯度下降来完成,因为L的梯度由

    DL = Q *(I * K-Ib)

    其中Q是通过转置K得到的内核(在信号处理文献中也称为匹配滤波器)。

    因此,您可以获得以下将对图像进行模糊处理的迭代算法。

    from scipy.ndimage import convolve

    blurred_image = # Load image

    kernel = # Load kernel/psf

    learning_rate = # You need to find this yourself, do a logarithmic line search. Small rate will always converge, but slowly. Start with 0.4 and divide by 2 every time it fails.

    maxit = 100

    def loss(image):

    return np.sum(convolve(image, kernel) - blurred_image)

    def gradient(image):

    return convolve(convolve(image, kernel) - blurred_image)

    deblurred = blurred_image.copy()

    for _ in range(maxit):

    deblurred -= learning_rate*gradient(image)

    上面的方法可能是最简单的迭代反卷积算法。 在实践中使用这些方法的方式是通过所谓的正则反卷积算法。 这些算法通过首先指定一个函数的工作,其测量噪声的图像中的量,例如TV(I)(I的总变化)。 然后在L(I)+ wTV(I)上执行优化过程。 如果您对此类算法感兴趣,建议阅读Amir Beck和Marc Teboulle撰写的FISTA论文。 这篇论文的数学运算量很大,但是您不需要了解其中的大部分内容,只需了解如何实现电视去模糊算法即可。

    除了使用调节器外,我们还使用加速方法来使损失L(I)最小化。 内斯特罗夫加速梯度下降就是这样一个例子。 有关此类方法的信息,请参阅Emmanuel Candes的Brendan O'Donoghue的《自适应加速梯度方案的重新启动》。

    概述如何执行图像去模糊。

    裁剪图像,使一切与相机的距离相同

    以与现在相同的方式查找卷积内核(首先在合成模糊图像上测试去卷积算法)

    实施迭代方法来计算去甲壳素

    对图像进行反卷积。

    展开全文
  • 雷锋网 (公众号:雷锋网) 按:本文为 雷锋字幕组 编译的技术博客,原标题GAN with Keras: Application to Image Deblurring,作者为Raphaël ...这篇文章主要介绍在 Keras 中 搭建GAN实现图像去模糊 。所有的Ker...

    雷锋网 (公众号:雷锋网) 按:本文为 雷锋字幕组 编译的技术博客,原标题GAN with Keras: Application to Image Deblurring,作者为Raphaël Meudec。

    翻译 | 廖颖  陈俊雅  整理 | 凡江

    2014年 Ian Goodfellow 提出了 生成对抗网络(GAN) 。这篇文章主要介绍在 Keras 中 搭建GAN实现图像去模糊 。所有的Keras代码可点击 这里 。

    快速回忆生成对抗网络

    GAN中两个网络的训练相互竞争。生成器( generator) 合成具有说服力的假输入 来误导判别器(discriminator ),而判别器则是来 识别这个输入是真的还是假的 。

    生成对抗网络训练过程— 来源

    训练过程主要有三步

    根据噪声,生成器 合成假的输入

    用真的输入和假的输入 共同训练判别器

    训练整个模型:整个模型中判别器与生成器连接

    注意:在第三步中,判别器的权重是固定的

    将这两个网络连接起来是由于生成器的输出没有可用的反馈。 我们唯一的准则就是看判别器是否接受生成器的合成的例子。

    这些只是对生成对抗网络的一个简单回顾,如果还是不够明白的话,可以参考 完整介绍 。

    数据

    Ian Goodfellow首次使用GAN模型是生成MNIST数据。 而本篇文章是 使用生成对抗网络进行图像去模糊 。因此生成器的输入不是噪声,而是模糊图像。

    数据集来自 GOPRO数据 ,你可以下载 精简版数据集 (9GB),也可以下载 完整版数据集 (35GB)。其中 包含了来自不同街道视角的人造模糊图像 ,根据不同的场景将数据集分在各个子文件夹中。

    我们先把图像分到 A (模糊)和 B (清晰)两个文件夹。这个 A&B 结构对应于原始文章 pix2pix 。我创建了一个 自定义脚本来执行这个任务。 看看 README 后尝试一下吧。

    模型

    训练过程还是一样,首先来看一下神经网络结构。

    生成器

    生成器要生成清晰图像,网络是基于 ResNet blocks 的,它可以记录对原始模糊图像操作的过程。原文还使用了基于 UNet 的版本,但我目前还没有实现。这两种结构都可以很好地进行图像去模糊。

    DeblurGAN 生成器网络 结构 — 来源

    核心是采用 9 个ResNet blocks 对原始图像进行上采样。来看一下Keras上的实现!

    ResNet 层就是一个基本的卷积层,其中,输入和输出相加,形成最终输出。

    生成器结构的 Keras 实现

    按照计划,用9个ResNet blocks对输入进行上采样。我们 在输入到输出增加一个连接 ,然后除以2 来对输出进行归一化。

    这就是生成器了! 我们再来看看判别器的结构吧。

    判别器

    判别器的目标就是要确定一张输入图片是否为合成的。因此判别器的结构采用卷积结构,而且是一个 单值输出 。

    判别器结构的 Keras 实现

    最后一步就是建立完整的模型。 这个GAN的一个特点 就是输入的是真实图片而不是噪声 。因此我们就有了 一个对生成器输出的直接反馈 。

    接下来看看采用两个损失如何充分利用这个特殊性。

    训练

    损失

    我们提取生成器最后和整个模型最后的损失。

    第一个是 感知损失 ,根据生成器输出直接可以计算得到。第一个损失保证 GAN 模型针对的是去模糊任务。 它比较了VGG第一次卷积的输出 。

    第二个损失是对整个模型输出计算的 Wasserstein loss , 计算了两张图像的平均差值 。众所周知,这种损失可以提高生成对抗网络的收敛性。

    训练流程

    第一步是加载数据并初始化模型。我们使用自定义函数加载数据集,然后对模型使用 Adam 优化器。我们设置 Keras 可训练选项来防止判别器进行训练。

    然后我们进行epochs(一个完整的数据集通过了神经网络一次并且返回了一次的过程,称为一个epoch),并将整个数据集分批次(batches)。

    最后根据两者的损失,可以相继训练判别器和生成器。用生成器生成假的输入,训练判别器区别真假输入,并对整个模型进行训练。

    你可以参考 Github 来查看完整的循环。

    实验

    我使用的是在 AWS 实例(p2.xlarge)上配置深度学习 AMI (version 3.0)进行的 。对 GOPRO 精简版 数据集的训练时间大约有 5 个小时(50个epochs)。

    图像去模糊结果

    从左到右:原始图像,模糊图像,GAN 输出

    上面的输出结果都是我们用 Keras 进行 Deblur GAN 的结果。即使是对高度模糊,网络也可以减小模糊,产生一张具有更多信息的图片,使得车灯更加汇聚,树枝更加清晰。

    左图: GOPRO 测试图像,右图:GAN 输出结果

    因为引入了VGG来计算损失,所以会产生图像顶部出现感应特征的局限。

    左图: GOPRO 测试图像,右图:GAN 输出结果

    希望你们可以喜欢这篇关于生成对抗网络用于图像去模糊的文章。 你可以评论,关注我或者 联系我 。

    如果你对机器视觉感兴趣,我们还写过一篇用Keras实现 基于内容的图像复原 。下面是生成对抗网络资源的列表。

    左图: GOPRO 测试图像,右图:GAN 输出结果

    生成对抗网络资源

    更多文章,关注雷锋网 雷锋网雷锋网

    添加雷锋字幕组微信号(leiphonefansub)为好友

    备注「我要加入」,To be an  AI  Volunteer !

    雷锋网原创文章,未经授权禁止转载。详情见 转载须知 。

    展开全文
  • 最近在做人脸识别清洗样本的工作,发现经过人脸对齐后存在部分图片...图片越模糊,imageVar的值越小,图像模糊。#-*-coding:utf-8-*-import sysreload(sys)sys.setdefaultencoding('utf-8')import osimport cv2imp...

    最近在做人脸识别清洗样本的工作,发现经过人脸对齐后存在部分图片十分模糊,所以用opencv滤了一下。

    原理就是使用了cv2.Laplacian()这个方法,代码如下。图片越模糊,imageVar的值越小,图像越模糊。

    #-*-coding:utf-8-*-

    import sys

    reload(sys)

    sys.setdefaultencoding('utf-8')

    import os

    import cv2

    import shutil

    THRESHOLD = 30.0

    dst_root = r'/media/unionpay/0009FFAB000A9861/CASIA&KFZX_CLEAR'

    for fpath, dirs, fs in os.walk('/media/unionpay/0009FFAB000A9861/CASIA&KFZX'):

    i = 0

    for dir in dirs:

    i += 1

    if i%100 == 0:

    print (str(i)+'folders processed current:'+dir)

    abs_dir = os.path.join(fpath, dir)

    for _, __, fs in os.walk(abs_dir):

    clear_img_list = []

    for f in fs:

    item = os.path.join(_, f)

    image = cv2.imread(os.path.join("/media/unionpay/0009FFAB000A9861/CASIA&KFZX/0000447", item))

    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

    imageVar = cv2.Laplacian(gray, cv2.CV_64F).var()

    if not imageVar < THRESHOLD:

    clear_img_list.append(item)

    dst_folder = os.path.join(dst_root, dir)

    if len(clear_img_list) >= 15:

    if not os.path.exists(dst_folder):

    os.mkdir(dst_folder)

    for item in clear_img_list:

    dst_path = os.path.join(dst_folder, item.split('/')[-1])

    shutil.copy(item, dst_path)

    以上这篇python模糊图片过滤的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

    本文标题: python模糊图片过滤的方法

    本文地址: http://www.cppcns.com/jiaoben/python/247390.html

    展开全文
  • 模糊操作 均值模糊 -适用于随机噪声 中值模糊 -适用于去除椒盐噪点 自定义模糊 -适用于图像增强,锐化等操作基本原理:1. 基于离散卷积2. 定义好每个卷积核3. 不同卷积核得到不同的卷积效果4. 模糊是卷积的...

    模糊操作

     均值模糊 -适用于去随机噪声

     中值模糊 -适用于去除椒盐噪点

     自定义模糊 -适用于图像增强,锐化等操作

    基本原理:

    1. 基于离散卷积

    2. 定义好每个卷积核

    3. 不同卷积核得到不同的卷积效果

    4. 模糊是卷积的一种表象

    卷积原理

    代码

    import cv2 as cv

    import numpy as np

    #均值模糊

    def blur_demo(image):

    dst = cv.blur(image, (5, 5))

    cv.imshow("blur_demo", dst)

    #中值模糊

    def median_blur_demo(image):

    dst = cv.medianBlur(image, 5)

    cv.imshow("median_blur_demo", dst)

    def custom_blur_demo(image):

    kernel = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], np.float32)

    dst = cv.filter2D(image, -1, kernel=kernel)

    cv.imshow("custom_blur_demo", dst)

    src = cv.imread("src/fish.jpg")

    cv.namedWindow("import image", cv.WINDOW_AUTOSIZE)

    cv.imshow("import image", src)

    custom_blur_demo(src)

    cv.waitKey(0)

    cv.destroyAllWindows()

    效果

    展开全文
  • 原标题:3行代码Python搞定图片清晰度识别,原来我们看到的不一定是这样的在通常情况下,图片是否清晰是个感性认识,同一个图,有可能你觉得还过得,而别人会觉得不清晰,缺乏一个统一的标准。然而有一些算法可以...
  • Python + OpenCV模糊处理(Bluring)

    千次阅读 2015-11-11 19:07:04
    Python + OpenCV模糊处理(Bluring) seuchenrui@126.com 模糊处理在边沿检测和噪声方面有较为广泛的应用。OpenCV中提供了4种模糊算法,列举如下: average median gaussian bilateral 本文将分别采用这4种算法对同...
  • 但也存在一定的缺陷,随着图像被污染程度的加深,此方法恢复的图像细节模糊、边缘损失也会越严重。 此处采用改进的自适应中值滤波算法进行图像恢复: 根据图像处理的空间相关性原则,采用自适应的方法选择不同的...
  • Opencv-图像去噪声

    2019-09-10 15:38:21
    图像去噪声知识点python代码c++代码 知识点 图像去噪声在OCR、机器人视觉与机器视觉领域应用开发中是重要的图像预处理手段之一,对图像二值化与二值分析很有帮助,OpenCV中常见的图像去噪声的方法有 均值去噪声 ...
  • Opencv:图像二值化与去噪Python实现

    千次阅读 2019-11-12 09:38:32
    图像二值化与去噪 一、内容 对于一张需要二值化的图像,我们有一般有两种...1.均值模糊去噪声 2.高斯模糊去噪声 3.双边/均值迁移模糊去噪声 4.非局部均值噪声 二、代码 import cv2 as cv import numpy a...
  • 最近因为复习高数在网上找三角函数图像,发现大多数都模糊不清,实在是头痛,所以自己学以致用,用Python画出了三角函数图像。希望我的博客可以帮到大家,也祝考研党们早日上岸,考上理想的学校! 想了解代码的详细...
  • 大图找小图,模糊识别?python

    千次阅读 2020-06-07 13:35:37
    之前写过截屏的大图找小图,但是,那个仅限于像素没有变化的情况下,如果说我用相机拍下我的桌面,想寻找一个图标,上一个方法是行不通的。 思路 1.对两张图片进行图像金字塔的处理,当需要寻找的图标变成了一个...
  • awesome-python 是 vinta 发起维护的 Python 资源列表,内容包括:Web 框架、网络爬虫、网络内容提取、模板引擎、数据库、数据可视化、图片处理、文本处理、自然语言处理、机器学习、日志、代码分析等。由「开源前哨...
  • python3.x Opencv Toturial

    2018-03-01 12:59:34
    为了一个小问 题就让他们学习 C++ 这么深奥的语言几乎是不可能的。而 Python 的悄 然兴起给他们带来的希望,如果说 C++ 是 tex 的话,那 Python 的易用性 相当于 word。他们可以很快的看懂本书的所有代码,并可以...
  • Opencv-均值迁移模糊

    2019-09-11 09:58:24
    边缘保留滤波算法 – 均值迁移模糊知识点python代码c++代码 知识点 边缘保留滤波算法 – 均值迁移模糊(mean-shift blur) 均值迁移模糊图像边缘保留滤波算法中一种,经常用来在对图像进行分水岭分割之前噪声,...
  • 受光照、气候、成像设备等因素的影响,灰度化后的图像存在噪声和模糊干扰,直接影响到下一步的文字识别,因此,需要对图像进行增强处理。图片预处理中重要一环就是椒盐澡,通常用到中值滤波器进行处理,效果很好。...
  • 拍摄视频的每一帧,从BGR转换为HSV颜色空间,将HSV图像阈值为一系列蓝色,现在单独提取蓝色对象。 提取蓝色对象 以下是详细的代码: import cv2 import numpy as np ...cap = cv2.VideoCapture(0... #高斯模糊...
  • Python-OpenCV中的实现代码: img_mean = cv2.blur(img, (3,3))#(3,3)卷积核是可调的 举个例子: 下面左图为椒盐噪声原始图像,右图为高斯噪声原始图像 下图从左到右分别为均值滤波(3,3)
  • 图像,尤其是照片可能存在一些难以解决的问题,比如模糊不清、离目标太近、光线很暗或太亮、比例失真、残缺、扭曲等,这会增加计算机系统抽取有用信息的难度。 基于神经网络识别图像中的字母,从而自动识别验证码...
  • Opencv-锐化增强算法(USM)

    千次阅读 2019-09-16 15:44:01
    USM 锐化增强算法知识点python代码c++代码 知识点 USM 锐化增强算法 图像卷积处理实现锐化有一种常用的算法叫做Unsharpen Mask方法,这种锐化的方法就是对原图像先做一个高斯模糊,然后用原来的图像减去一个系数乘以...
  • Opencv-中值滤波

    2019-09-10 15:10:25
    中值滤波本质上是统计排序滤波器的一种,中值滤波对图像特定噪声类型(椒盐噪声)会取得比较好的去噪效果,也是常见的图像去噪声与增强的方法之一。中值滤波也是窗口在图像上移动,其覆盖的对应ROI区域下,所有像素...
  • 噪音:使用双边滤波器,该滤波器考虑了图像的空间关系,也考虑图像的灰度关系。双边滤波同时使用了空间高斯权重和灰度相似性高斯权重,确保了边界不会被模糊掉。然后,肤色检测和二值化处理采用YCrCb颜色空间的Cr...
  • 该项目使用诸如背景去除,模糊和将ROI阈值限定为二进制图像之类的方法,以便可以检测轮廓。在检测到最大轮廓(即我们的手的轮廓)之后,将检测轮廓的最高点(通常是指尖)。 ROI周围的较大圆圈已使用基本三角函数沿...
  • 28_ElasticSearch误拼写时的fuzzy模糊搜索技术 29_ElasticSearchIK中文分词器的安装和使用 30_ElasticSearch IK分词器配置文件 以及自定义词库 31_ElasticSearch 修改IK分词器源码来基于mysql热更新词库 ...
  • 图像处理基本算法代码 感谢支持 无人驾驶的各个方面知识 参考 1. 感知(Perception): 主要涉及的技术点包括场景理解、交通状况分析、路面检测、空间检测、 障碍物检测、行人检测、路沿检测、车道检测。还有一...
  • 用来做中文OCR的Python3包、中文人物关系知识图谱项目、中文nlp竞赛项目及代码汇总、中文字符数据、speech-aligner: 从“人声语音”及其“语言文本”产生音素级别时间对齐标注的工具、AmpliGraph: 知识图谱表示学习...
  • 2014互联网女皇报告:适应用户的习惯是明智之举.epub 2015年50+ CSS 工具、框架、库合集.epub 2015年50+ JavaScript 工具、资源合集.epub 2015智能可穿戴市场白皮书.epub 2015杭州?云栖大会 【电子会刊】.epub 21...
  • 2014互联网女皇报告:适应用户的习惯是明智之举.epub 2015年50+ CSS 工具、框架、库合集.epub 2015年50+ JavaScript 工具、资源合集.epub 2015智能可穿戴市场白皮书.epub 2015杭州?云栖大会 【电子会刊】.epub 21...
  • 图片加载picasso,Glide加载监听,获取缓存,圆角图片,高斯模糊 list条目点击水波纹效果 CoordinatorLayout+Behavior实现标题栏渐变 自定义RecyclerView下拉刷新上拉加载,支持加载loading,空页面,异常界面,有...

空空如也

空空如也

1 2
收藏数 31
精华内容 12
关键字:

python图像去模糊代码

python 订阅