JBU联合双边上采样
很多圖像處理算法,如立體視覺中的深度估計,圖像上色,高動態(tài)范圍HDR中的tone mapping,圖像分割,都有一個共性的問題:尋找一個全局的解,這個解是指一個分段的piecewise平滑含糊,描述了感興趣的值(可以是深度,色度,曝光值,標(biāo)簽等)。
另一方面,數(shù)字圖像越來越大,從one quarter million到multi-Megapixel到Gigapixel,隨著圖像尺寸的變大,圖像處理的耗時和占用空間也線性增長。一個處理方法就是對原始圖像先進行下采樣的預(yù)處理再進行圖像處理,但這也帶來一個問題,就是將處理之后的圖像再恢復(fù)到原始的分辨率,這就是圖像的超分辨率重建。很顯然,我們可以利用原始的大尺寸圖像。將原始的圖像與雙邊濾波結(jié)合起來,就是本文新提出的算法JBU。
雙邊濾波bilateral filter是一個保邊濾波edge-preserving filter,最早在1998年提出,為了解決傳統(tǒng)的插值的圖像上采樣方法會造成邊緣模糊。為了保留邊緣,BF在不同位置的核參數(shù)應(yīng)該是不一樣的,所以BF屬于非線性的濾波器,也是各向異性的濾波器。具體而言,濾波器會根據(jù)不同的空間位置和灰度變化范圍進行調(diào)整,這也是“雙邊”的含義,一邊是空域spatial filter(與中心點的距離遠(yuǎn)近),一邊是與中心點的灰度差值大小range filter。從表達(dá)式上看,最終的濾波器系數(shù)的兩個核的乘積。兩個子核都可以是高斯函數(shù),當(dāng)灰度變化很大或者距離很遠(yuǎn),那么濾波器系數(shù)就會很小,所以邊緣就得以保留。
有人利用BF做HDR中的色調(diào)映射tone mapping,有人用來去馬賽克,
那么如何將BF和大尺寸的guidance圖像結(jié)合在一起呢?是使用灰度差異的子核還是使用空間距離的子核呢?為了利用更準(zhǔn)確的邊緣信息,是按照像素在大尺寸圖像中對應(yīng)的灰度值來計算濾波系數(shù),因為邊緣往往是灰度值跳變造成的,所以使用大圖位置的灰度值更準(zhǔn)確。和OpenCV做圖像變換一樣,這種像素坐標(biāo)的映射關(guān)系也是從目標(biāo)圖像(這里是大圖)到低分辨圖像。
作為引導(dǎo)圖的高分辨圖像是離散采樣的,所以超分重建的效果與上采樣的比例無關(guān)。
4 應(yīng)用
色調(diào)映射tone mapping是為了在普通設(shè)備中顯示HDR圖像。需要解很大的線性方程組,雖然可以通過multi-resolution solvers高效地解出,但是當(dāng)數(shù)據(jù)很大時還是會占用相當(dāng)大的內(nèi)存。那么,JBF具體是怎么應(yīng)用在HDR中的呢?首先,I是低分辨率的圖像,T是某種tone mapping算子,那么T(I)就是這個算子生成的tone mapped圖像。對應(yīng)的低分辨率的解被定義為映射前后的像素級的比,也就是說,這個圖其實是曝光圖exposure map,表示應(yīng)用在每個像素上的曝光校正系數(shù)。我們就是在這個圖上使用JBF,因為這個圖雖然大部分是平滑的,但是在具有顯著邊緣特性的區(qū)域會出現(xiàn)不連續(xù)。注意曝光圖可能是單通道的(即只對亮度進行調(diào)節(jié)),也可能是多通道的(即支持多種色調(diào)的調(diào)節(jié))。
在Levin的圖像上色和圖像重新著色的方法中也有類似的線性方程組,面對尺寸很大的圖像同樣有計算量大的問題。Yatziv的方法雖然不需要解線性方程組,但依然要迭代地遍歷數(shù)據(jù)。在這里JBU的應(yīng)用對象就是著色之后的低分辨率圖像,但是在上采樣之前,需要先將它轉(zhuǎn)換至YIQ顏色空間(或者其他任意的將亮度與色度解耦的顏色空間),然后在每個色度通道上應(yīng)用JBU。從圖3中可以看到,JBU避免了在邊緣區(qū)域的色度泄漏。
立體視覺深度估計。深度估計的關(guān)鍵是得到兩幅圖像中對應(yīng)點的視差disparities。然而,估計出的深度圖在邊緣處是不連續(xù)的discontinuties。將高分辨率圖像作為引導(dǎo),就可以對低分辨率的深度圖像進行上采樣。
基于圖分割Graph-cut的圖像處理。近來出現(xiàn)的一些用戶交互性的圖像編輯技術(shù)涉及到了在圖中尋找最小分割。比如交互性的蒙太奇照片系統(tǒng),使用最小圖分割技術(shù)來計算圖像融合時的最小化接縫。優(yōu)化的結(jié)果是一個標(biāo)簽圖label map,label表明的是融合圖是每個像素來自于哪個照片。約束條件是用戶指定的幾個圖像,拼接算法做的是計算出label map,指定了剩余的沒有被約束的像素來自于哪個圖像,這樣生成的圖像其拼接感是最小的。這個標(biāo)簽圖和之前的幾個應(yīng)用的區(qū)別在于標(biāo)簽是離散的,做法是這樣的,為了得到每個像素的標(biāo)簽,對每個低分辨率的像素會有一個帶非零權(quán)重的投票,獲勝的標(biāo)簽會有累積最高的權(quán)重。
5 表現(xiàn)和準(zhǔn)確性
JBU的復(fù)雜度是O(Nr2),N是輸出圖像的尺寸,r是濾波器的尺寸。表現(xiàn)與輸出尺寸有關(guān),但是與上采樣因子無關(guān),因為濾波器始終應(yīng)用在低分辨率圖像上。所有的結(jié)果都使用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(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(:));endendend對于彩色三通道圖像,可以分別在RGB中進行上采樣,但是可能造成顏色泄漏,通常的做法是先進行顏色空間轉(zhuǎn)換。原文使用使用的是YIQ,但其實只要是亮度分離的顏色空間都可以。YIQ是電視系統(tǒng)中使用的顏色空間,對應(yīng)美國和日本的NTSC制式,在matlab中rgb到Y(jié)IQ的轉(zhuǎn)換函數(shù)是rgb2ntsc.首先YUV和YIQ三通道都是獨立的,所以使得黑白電視機也可以接收彩色電視信號。另外,黑白圖像主要提供細(xì)節(jié),所以顏色通道的帶寬可以適當(dāng)壓縮。
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_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param&depth_1-utm_source=distribute.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
?
總結(jié)
以上是生活随笔為你收集整理的JBU联合双边上采样的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tensorflow实现回归
- 下一篇: 图像处理中的通信原理——冈萨雷斯读书笔记