matlab bilateral 函数,2.阅读笔记:Joint Bilateral Upsampling

Abstract:

图像分析和增强任务,例如色调映射,彩色化,立体声深度和照相蒙太奇,通常需要计算像素网格上的解(例如,用于曝光,色度,视差,标签)。 计算和存储器成本通常要求在下采样图像上运行较小的解。 虽然通用上采样方法可以用于将低分辨率解决方案内插到全分辨率,但是这些方法通常假定内插之前的平滑性。

我们证明在诸如上面的情况下,可用的高分辨率输入图像可以被利用作为在联合双向上采样程序的上下文中的先验,以产生更好的高分辨率解决方案。 我们显示上述每个应用的结果,并将其与传统的上采样方法进行比较。

来我们来回顾一下之前的BF和JBF

BF:

ce4afe599d6a

f为the spatial filter kernel,就想高斯kernel,是以p为中心。

g 为the range filter kernel,图像中心的像素值为Ip.

Ω is the spatial support of the kernel f

kp is a normalizing factor, the sum of the f · g filter weights

kp为一个window中的所有的f与g相乘的值

JBF(joint bilateral filters):

ce4afe599d6a

Joint Bilateral Upsampling:

ce4afe599d6a

S is the low resolution solution

可以看出对于像素值差值的高斯函数是通过采样得到的,至于怎么采样,就是选取color图像的(i,j)为中心,以离中心(i,j)采样间隔的整数倍距离进行采样,当然采样范围不能超过给定windows的范围

g:就是正常的从depth image中获得的距离的高斯函数(在代码中,depth image是经过下采样后的图像)

matlab code:

function result = JointBilateralUpsample(color,depth,factor,sigma_w,sigma_c,w)

if( size(color,3) ~= 3 ),

error( 'color data must be of 3 channel' );

end

depth = 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:highHeight

for j = 1:highWidth

id = i/factor;

jd = j/factor;

iMin = ceil(max(id-w,1));

iMax = floor(min(id+w,lowHeight));

jMin = ceil(max(jd-w,1));

jMax = floor(min(jd+w,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_sec>0) .* range .* spatial;

depth_sum = depth_sec .* depth_weight;

result(i,j) = sum(depth_sum(:)) / sum(depth_weight(:));

end

end

end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值