几种常用的假设图像边界条件用于抑制振铃效应及实现(上)

article/2025/5/14 6:23:25

一 介绍        

传统的图像复原方法可能会给复原图像引入振铃效应,并且以边界振铃为主;产生这种现象的原因简单地来讲主要是由于模糊核的 不精确或者信息丢失。

[图片来自论文《光学合成孔径系统成像性能优化与分析》P79 魏小峰]

        Renting liu、Jiaya Jia在论文《REDUCING BOUNDARY ARTIFACTS IN IMAGE DECONVOLUTION》中对这种效应的原因进行了解释:

        The convolution operator makes use of not only the image in the Field of View (FOV) of the given observation but also part of the scenery in the area bordering it.Hence, part of the information that is used to produce the filtered image boundary pixels is not available to the deconvolution process. Using the Fast Fourier Transform (FFT), the effect of missing boundary would propagate throughout the image and deteriorate the entire image. This problem is known as the boundary value problem, which poses a difficulty to various image restoration methods.

        大意为在图像模糊的过程中,卷积算子(模糊核)不仅仅利用清晰图像FOV内的信息,也利用了外部边缘的信息。但是获取的图像只是FOV内的图像,FOV外界信息缺失,不能用于反卷积来复原图像,这种信息缺失在整个图像中传播导致了振铃效应。

        同样,Xu Zhou等在《A boundary condition based deconvolution framework for image deblurring》也有类似的解释:

        Since the outside information of FOV is unavailable, some assumptions on the outside values are needed to estimate x. These assumptions are called the boundary conditions.

        Due to lack of boundary information that is used to produce the blurred image, in most cases, it is impossible to estimate an accurate solution from the observation data. The missing boundary values usually cause serious ringing artifacts around the boundary of restored image, and would propagate it throughout the entire image if image boundary is not well treated.

        原文中x表示原始FOV内的图像。 

        假设清晰图像为M*N大小,卷积算子为(2m+1)*(2m+1)大小,在对图像第1~m行、M-m+1到M行、1~m列、N-m+1~N-m行的像素进行卷积的过程中,卷积算子的范围超出了图像的边界,而默认边界外是0,其实有时是不准确的,在观察得到的FOV外存在某些信息参与了模糊过程,因此本文探讨如何估计这些外部边界信息(也即假设边缘条件,或简称BC)来减少复原的振铃效应。如下图所示,黑框内为FOV,蓝色区域为图像临近边界区域,也就是卷积计算时有FOV外像素参与计算的区域,红框为卷积算子,灰色为当前卷积的像素,绿框到黑框范围时需要假设的外部边界信息。

        目前,经典的假设边界条件有zero(Dirichlet)、periodic、reflective(Neumann、symmetric)、anti-reflective,这些BC对于传统非盲复原算法有很好的抑制效果,但对于新的复原算法就不太适用,后来学者相继提出了平滑边界方法[Reducing boundary artifacts in image deconvolution]、基于反卷积框架的边界条件[A boundary condition based deconvoluton framework for image deblurring]、渐进边界假设[基于稀疏正则化和渐近边界假设的运动模糊图像盲复原 ]等。

二 传统边界条件

        以一维信号为例,模糊模型为:

        g表示为模糊信号,f表示为输入的原始信号,h表示模糊核,v表示噪声。

        设f长度为n,h长度为2m+1,则可以表示为:

        f具有两个边界,即左边界fl和有边界fr:

        最后带扩展边界的信号表示为:

         假设边界条件就在于f已知,去假设fl和fr。

        四种传统的边界扩充条件公式如下:

        1.zero(Dirichlet)

        显而易见,边界直接为0.

        2.periodic

        周期边界,相当于多个相同图像拼在一起,之后对某个图像按稍大图像尺寸的大小进行截取。

        3.reflective

        反射边界,相当于以图像边缘线为对称轴进行对称得到。

        4.anti-reflective

        抗反射边界。

四种传统BC的效果图:

 [图源《Antireflective boundary conditions for deblurring problems 》在IPCA2010的ppt]

在二维图像中,几种BC的效果按上述介绍的顺序展示如下:

代码如下:

 

x=rgb2gray(imread('tt.jpg'));
[N1,N2]=size(x);
% [M1,M2]=size(Psf);
M1=127;
M2=127;
m1=(M1-1)/2;
m2=(M1-1)/2;
%zero (DiricChlet) B
%that the signal outside the domain of the observed vector g is ZERO
xe0=zeros(N1+2*m1,N2+2*m2);
xe0(m1+1:m1+N1,m2+1:m2+N2)=x;%periodic boundary
xep=zeros(N1+2*m1,N2+2*m2);
xep(m1+1:m1+N1,m2+1:m2+N2)=x;
for i=1:m1xep(i,:)=xep(N1+i,:);xep(i+m1+N1,:)=xep(m1+i,:);
end
for i=1:m2xep(:,i)=xep(:,N2+i);xep(:,i+m2+N2)=xep(:,m2+i);
end%Neumann BC
xeN=zeros(N1+2*m1,N2+2*m2);
xeN(m1+1:m1+N1,m2+1:m2+N2)=x;
for i=1:m1xeN(i,:)=xeN(2*m1-i+1,:);xeN(i+m1+N1,:)=xeN(N1-i+m1+1,:);
end
for i=1:m2xeN(:,i)=xeN(:,2*m2-i+1);xeN(:,i+m2+N2)=xeN(:,N2-i+m2+1);
end%antireflective BC
%f(1-j)=2f(1)-f(1+j)
%f(n+j)=2f(n)-f(n-j)
xea=zeros(N1+2*m1,N2+2*m2);
xea(m1+1:m1+N1,m2+1:m2+N2)=x;
for i=1:m1xea(m1+1-i,:)=2*xea(m1+1,:)-xea(m1+1+i,:);xea(i+m1+N1,:)=2*xea(m1+N1,:)-xea(m1+N1-i,:);
end
for i=1:m2xea(:,m2+1-i)=2*xea(:,m2+1)-xea(:,m2+1+i);xea(:,i+m2+N2)=2*xea(:,m2+N2)-xea(:,m2+N2-i);
end

Psf表示计算或者导入得到的PSF函数(模糊核,卷积算子)在此只用于边界扩充,不用导入或者计算,直接赋值了其大小M1*M2(必须为奇数,否则m1和m2不是整数)。xe的第m1+1到m1+N1、m2+1:m2+N2列为原图像,其余区域为外部边界区域。最后xe0、xep、xeN、xea为各种BC的图像,其中xea由于计算中出现赋值,需要归一化(但是中间图像的灰度会变低)或者转为uint8格式(小于0的变为0,大于255的变为255)。


http://chatgpt.dhexx.cn/article/8RCP52UX.shtml

相关文章

rpm包的卸载

两个步骤: 1、查询 即查询Linux中安装的完整包名 命令【rpm -qa | grep xxx】 例如:rpm -qa | grep unzip 2、卸载 命令:rpm -e RPM包的完整名称 例如:rpm -e unzip-6.0-19.el7.x86_64 卸载之后检查发现已经不存在 - - -…

linux卸载命令6,小编为你叙述linux卸载命令【操作流程】

大家应该都知道我们在使用电脑的时候,会发现linux卸载命令【操作流程】的问题,如今还有很多用户不知道如何处理linux卸载命令【操作流程】的情况,于是我就给大家整理总结了linux卸载命令【操作流程】的具体处理方案,就是按照1&…

Linux常见命令 25 - RPM包安装、升级、卸载、查询、校验、提取

目录 1. 包名与包全名 2. RPM安装 3. RPM包升级 4. RPM包卸载 5. 查询是否安装RPM包 6. RPM包校验 7. RPM包中文件提取 1. 包名与包全名 包全名:操作的包是没有安装的软件包时,使用包全名,而且要注意路径包名:操作已经安…

linuxrpm命令卸载python_Linux RPM包安装、卸载、升级命令讲解

一个 RPM 包包含了已压缩的软件文件集以及该软件的内容信息,通常表现为以 .rpm 扩展名结尾的文件,例如 samba.rpm 。如果需要对RPM包进行操作则需要使用rpm命令。 一、RPM包的来源 所有RPM包都在系统光盘的Packages目录中,那么我们如何获取包…

rpm卸载包的命令

可以先用rpm -q xxx 或者 rpm -qf xxx/bin/xxxx.xx 来查询一下所属的rpm包的名字。然后用rpm -e xxxxxx 来删之。xxx/bin/xxxx.xx 是一个包中任意的文件xxxxxx 是查询得到的rpm包的名称 rpm -e的时候后面的文件名不用加版本号 安全地卸载 RPM卸载软件包,并不是简单地将原来安…

linux的rpm卸载,linux rpm卸载参数

linux rpm卸载参数 本站整理 发布时间:2009-03-10 15:38:48 作者:jb51.net 我要评论 rpm卸载参数--test : 卸载测试 --nodeps : 不检查依赖 --noscripts : 不执行脚本程序 --notriggers : 不执行触发程序 --justdb : 仅修改数据库 --force 强制 RPM卸载软件包,并不是…

rpm卸载命令

可以先用rpm -q xxx 或者 rpm -qf xxx/bin/xxxx.xx 来查询一下所属的rpm包的名字。 然后用rpm -e xxxxxx 来删之。 xxx/bin/xxxx.xx 是一个包中任意的文件 xxxxxx 是查询得到的rpm包的名称 rpm -e的时候后面的文件名不用加版本号 安全地卸载 RPM卸载软件包,并不是简单…

关于传递函数的双边线性Z变换+差分方程

下午查了一下午资料,翻看了一些书籍,看了一些视频学习!!!抛开这些,进入整体。 双边线性Z变换: 将S域虚轴和实轴改为Z域单位圆,由连续变为离散。 线性公式:(如…

基于深度学习的视频预测研究综述

原址:http://html.rhhz.net/tis/html/201707032.htm (收集材料ing,为论文做准备)[综述性文章,,,可以做背景资料] 莫凌飞, 蒋红亮, 李煊鹏 摘要:近年来,深度学习算法在众多有监…

【数字信号处理】傅里叶变换性质 ( 傅里叶变换频移性质示例 | PCM 音频信号处理 | 使用 matlab 进行频移操作 )

文章目录 一、PCM 音频信号处理二、要点说明 一、PCM 音频信号处理 给定一段 PCM 音频数据 , 封装到 .WAV 文件 中 , 此时的信号 是 实信号 , 每个 PCM 音频采样都是一个 实数值 , 绘制该 音频数据 实信号 的 " 幅频特性 " , 将该 PCM 音频的 频率 移动 6 k H z 6…

Three.js视频教程

Threejs引擎 Threejs是WebGL多款3D引擎之一,threejs相比较babylonjs、cesiumjs等引擎在国内使用的更广泛,中文资料更多,相关招聘更多。所以对于WebGL工程师来说,学习threejs是很有必要的。 视频教程发布地址 案例欣赏 下面一些…

AV1视频编解码器核心编码工具概述

一、介绍 在过去的十年里,基于网络的视频应用变得非常普遍,现代设备和网络基础设施推动了高分辨率、高质量内容消费的快速增长。因此,占主导地位的带宽消费者,如视频点播(VoD)、实时流媒体和会话视频&…

Android平台上基于OpenGl渲染yuv视频

本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 更多音视频开发文章,请看:音视频开发专栏 介绍一个自己刚出炉的音视频播放录制开源项目 前言 这是我音视频专栏的第一篇实例解析,也算是入门篇,重…

视频编码基本原理

原博客地址:https://blog.csdn.net/leixiaohua1020/article/details/28114081 视频编码基本原理 1.视频编码基本原理 (1) 视频信号的冗余信息 以记录数字视频的YUV分量格式为例,YUV分别代表亮度与两个色差信号。例如对于现有的…

从零开始傅里叶变换

1.前言 傅里叶变换是很多领域的基础工具&#xff0c;常用来做频域变换。但凭什么傅里叶变换可以转换至频域&#xff0c;又什么是频域。看门见山。 连续傅里叶变换公式: F ( w ) < f ( t ) , e i w t > ∫ − ∞ ∞ f ( t ) e − i w t d t (1.1) F(w) <f(t),…

小波变换(一)

小波变换(一) 由于项目可能会用到的原因,学一下,感觉已有的通俗易懂教程不够相应的学术性. 教程:《数字信号处理》陈后金著 视频教程:中国大学mooc-数字信号处理 文章目录 小波变换(一)傅里叶变换的局限性短时傅里叶变换(STFT)时间分辨率频谱分辨率我们到底想要什么东西 信号…

360视频:旋转球面投影RSP

旋转球面投影&#xff08;Rotated sphere projection&#xff0c;RSP&#xff09;将球体分为两个相同的部分&#xff0c;然后投影到平面上&#xff0c;宽高比3&#xff1a;2。 图1 RSP投影 球面上两部分的分割线类似于图2中网球上的分割线。 图2 网球分割示意图 Frame Packin…

视频防抖技术的实现

1. 介绍 视频防抖是指用于减少摄像机运动对最终视频的影响的一系列方法。摄像机的运动可以是平移&#xff08;比如沿着x、y、z方向上的运动&#xff09;或旋转&#xff08;偏航、俯仰、翻滚&#xff09;。 对视频防抖的需求在许多领域都有。 这在消费者和专业摄像中是极其重…

音视频基础:视频的编码

本文主要参考《图像通信技术与应用》作者陈柘 陈川 记录了数字图像的模型、图像变换的数学原理、图像编码的基本思想、H.26x等视频标准、以及视频的传输模型等概念&#xff0c;只介绍思想&#xff0c;无数学推导&#xff0c;无代码实践&#xff0c;属于音视频入门知识 视频的编…

视频压缩基本概念

视频压缩基本概念 为什么需要压缩视频 首先回答why这个问题。 假设一个2小时未压缩的高清视频&#xff0c;19201080p的电影&#xff0c;我们来计算一下他的存储容量。先介绍一下帧率(frame rate或者是 FPS)概念&#xff0c;也就是每秒传输图片的帧数&#xff0c;也可以理解为…