北京网站建设项目,无锡网站优化哪家好,沈阳seo顾问,网拍外宣怎么推广很多图像处理算法#xff0c;如立体视觉中的深度估计#xff0c;图像上色#xff0c;高动态范围HDR中的tone mapping#xff0c;图像分割#xff0c;都有一个共性的问题#xff1a;寻找一个全局的解#xff0c;这个解是指一个分段的piecewise平滑含糊#xff0c;描述了…很多图像处理算法如立体视觉中的深度估计图像上色高动态范围HDR中的tone mapping图像分割都有一个共性的问题寻找一个全局的解这个解是指一个分段的piecewise平滑含糊描述了感兴趣的值可以是深度色度曝光值标签等。
另一方面数字图像越来越大从one quarter million到multi-Megapixel到Gigapixel随着图像尺寸的变大图像处理的耗时和占用空间也线性增长。一个处理方法就是对原始图像先进行下采样的预处理再进行图像处理但这也带来一个问题就是将处理之后的图像再恢复到原始的分辨率这就是图像的超分辨率重建。很显然我们可以利用原始的大尺寸图像。将原始的图像与双边滤波结合起来就是本文新提出的算法JBU。
双边滤波bilateral filter是一个保边滤波edge-preserving filter最早在1998年提出为了解决传统的插值的图像上采样方法会造成边缘模糊。为了保留边缘BF在不同位置的核参数应该是不一样的所以BF属于非线性的滤波器也是各向异性的滤波器。具体而言滤波器会根据不同的空间位置和灰度变化范围进行调整这也是“双边”的含义一边是空域spatial filter与中心点的距离远近一边是与中心点的灰度差值大小range filter。从表达式上看最终的滤波器系数的两个核的乘积。两个子核都可以是高斯函数当灰度变化很大或者距离很远那么滤波器系数就会很小所以边缘就得以保留。
有人利用BF做HDR中的色调映射tone mapping有人用来去马赛克
那么如何将BF和大尺寸的guidance图像结合在一起呢是使用灰度差异的子核还是使用空间距离的子核呢为了利用更准确的边缘信息是按照像素在大尺寸图像中对应的灰度值来计算滤波系数因为边缘往往是灰度值跳变造成的所以使用大图位置的灰度值更准确。和OpenCV做图像变换一样这种像素坐标的映射关系也是从目标图像这里是大图到低分辨图像。
作为引导图的高分辨图像是离散采样的所以超分重建的效果与上采样的比例无关。
4 应用
色调映射tone mapping是为了在普通设备中显示HDR图像。需要解很大的线性方程组虽然可以通过multi-resolution solvers高效地解出但是当数据很大时还是会占用相当大的内存。那么JBF具体是怎么应用在HDR中的呢首先I是低分辨率的图像T是某种tone mapping算子那么T(I)就是这个算子生成的tone mapped图像。对应的低分辨率的解被定义为映射前后的像素级的比也就是说这个图其实是曝光图exposure map表示应用在每个像素上的曝光校正系数。我们就是在这个图上使用JBF因为这个图虽然大部分是平滑的但是在具有显著边缘特性的区域会出现不连续。注意曝光图可能是单通道的即只对亮度进行调节也可能是多通道的即支持多种色调的调节。
在Levin的图像上色和图像重新着色的方法中也有类似的线性方程组面对尺寸很大的图像同样有计算量大的问题。Yatziv的方法虽然不需要解线性方程组但依然要迭代地遍历数据。在这里JBU的应用对象就是着色之后的低分辨率图像但是在上采样之前需要先将它转换至YIQ颜色空间或者其他任意的将亮度与色度解耦的颜色空间然后在每个色度通道上应用JBU。从图3中可以看到JBU避免了在边缘区域的色度泄漏。
立体视觉深度估计。深度估计的关键是得到两幅图像中对应点的视差disparities。然而估计出的深度图在边缘处是不连续的discontinuties。将高分辨率图像作为引导就可以对低分辨率的深度图像进行上采样。
基于图分割Graph-cut的图像处理。近来出现的一些用户交互性的图像编辑技术涉及到了在图中寻找最小分割。比如交互性的蒙太奇照片系统使用最小图分割技术来计算图像融合时的最小化接缝。优化的结果是一个标签图label maplabel表明的是融合图是每个像素来自于哪个照片。约束条件是用户指定的几个图像拼接算法做的是计算出label map指定了剩余的没有被约束的像素来自于哪个图像这样生成的图像其拼接感是最小的。这个标签图和之前的几个应用的区别在于标签是离散的做法是这样的为了得到每个像素的标签对每个低分辨率的像素会有一个带非零权重的投票获胜的标签会有累积最高的权重。
5 表现和准确性
JBU的复杂度是O(Nr2)N是输出图像的尺寸r是滤波器的尺寸。表现与输出尺寸有关但是与上采样因子无关因为滤波器始终应用在低分辨率图像上。所有的结果都使用5x5的高斯滤波速度快同时可以将足够距离的像素值考虑进去。
function result JointBilateralUpsample(color,depth,factor,sigma_w,sigma_c,w)
if( size(color,3) ~ 3 ),error( color data must be of 3 channel );
enddepth double(depth);
color double(color);
highHeight size( color, 1 );
highWidth size( color, 2 );
lowHeight size(depth,1);
lowWidth size(depth,2);
result zeros(highHeight,highWidth);
for i 1:highHeightfor j 1:highWidthid i/factor;jd j/factor;iMin ceil(max(id-w,1));iMax floor(min(idw,lowHeight));jMin ceil(max(jd-w,1));jMax floor(min(jdw,lowWidth));depth_sec depth(iMin:iMax,jMin:jMax);color_sec color(iMin * factor:factor:iMax * factor,jMin * factor:factor:jMax * factor,:);% Compute Gaussian range weights.dR color_sec(:,:,1)-color(i,j,1);dG color_sec(:,:,2)-color(i,j,2);dB color_sec(:,:,3)-color(i,j,3);range exp( -(dR.^2 dG.^2 dB.^2) / (2*sigma_c^2));% Calculate bilateral filter response.iw (iMin:iMax) - id;jw (jMin:jMax) - jd;[mx,my] meshgrid(jw,iw);spatial exp( -(mx.^2 my.^2) / (2*sigma_w^2) );depth_weight (depth_sec0) .* range .* spatial;depth_sum depth_sec .* depth_weight;result(i,j) sum(depth_sum(:)) / sum(depth_weight(:));endendend
对于彩色三通道图像可以分别在RGB中进行上采样但是可能造成颜色泄漏通常的做法是先进行颜色空间转换。原文使用使用的是YIQ但其实只要是亮度分离的颜色空间都可以。YIQ是电视系统中使用的颜色空间对应美国和日本的NTSC制式在matlab中rgb到YIQ的转换函数是rgb2ntsc.首先YUV和YIQ三通道都是独立的所以使得黑白电视机也可以接收彩色电视信号。另外黑白图像主要提供细节所以颜色通道的带宽可以适当压缩。
Reference:
1.http://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/MANDUCHI1/Bilateral_Filtering.html
2.https://zhuanlan.zhihu.com/p/21983679
3.https://www.jianshu.com/p/ce4afe599d6a
4.https://blog.csdn.net/CHNguoshiwushuang/article/details/82469162?utm_mediumdistribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_paramdepth_1-utm_sourcedistribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param
5.https://www.cnblogs.com/magic-428/p/9172406.html
6.ntsc2rgbhttps://www.mathworks.com/help/images/ref/ntsc2rgb.html