2009年12月9日 星期三

使用積分影像法(integral image)取代金字塔圖層




做影像處理常用到金字塔圖層的方式做影像加速處理的方法。
但金字塔圖層會多用掉記憶體,使用量剛好是原圖的一半。
後來發現有人使用積分影像法(integral image),它可以同時代表原圖及金字塔圖層。
因為可以做不同大小的差分而獲得所需的圖。
只要取點時算A-B-C+D就好了。



7 則留言:

  1. 後來發現有人使用積分影像法(integral image),它可以同時代表原圖及金字塔圖層。

    請問為何 使用積分影像 可以代表呢??

    我看了 還是不太暸解~

    可否請大大 再說明= =!! 謝謝
    [版主回覆12/24/2010 14:59:01]因為金字塔圖層所使用的記憶體多。以長寬各縮半的狀況來做,加上原圖需1又1/3的記憶體。而且解析度無法變動。
    積分圖,不管要取出那一種解析度的圖,都做一樣的運算。也不必保留原圖。所以只要使用和原圖一樣的記憶體。
    解析度可以自由變動對運算的自由度上有幫助。

    回覆刪除
  2. 因為積分影像 就是為了能快速得知 原影像像素灰階值 那何不用原影像就好??
    [版主回覆12/24/2010 15:01:20]並不會比較快。只是可以在不同解析度內自由切換。

    回覆刪除
  3. 謝謝你的回答
    還是不太瞭解你的意思~
    積分影像這個名詞 我是在一篇paper SURF(Speed up robost feature) 中看到
    文中 只提到可加速運算速度! 查看其他中文論文 大家回答也是類似~並無多做說明
    也沒人說使用積分影像法(integral image),它可以同時代表原圖及金字塔圖層??
    請問這是引用那篇論文呢?!
    為何會說不管要取出那一種解析度的圖,都做一樣的運算。也不必保留原圖。
    所以只要使用和原圖一樣的記憶體。解析度可以自由變動對運算的自由度上有幫助。
    還是不能體會...感謝你的回答...謝謝
    [版主回覆12/24/2010 20:53:56]我也是想做SURF相關的論文。只是目前進度不良。
    一般說積分影像會加速,是和SIFT相比。
    SIFT和SURF在Scale space上花了很多工夫。
    所以可以在解析度上自由選定,會在Scale Space上得到優勢。

    回覆刪除
  4. 我想了一下Bee所說的為何會說不管要取出那一種解析度的圖,都做一樣的運算。也不必保留原圖。所以只要使用和原圖一樣的記憶體。解析度可以自由變動對運算的自由度上有幫助。

    所為的不同解析度

    意思是否代表說 假設一張320*240 灰階圖像 做積分影像
    與 160*120 灰階圖像 做積分影像
    80*60 灰階圖像 做績分影像 灰階強度一樣嗎??

    因此 反過來想 若是用不同的 mask 對 一張320*240的積分圖像
    而mask 逐見放大即可見立出一個 類似影像金字塔 之影像圖層嗎?!

    請問我這樣 解釋 是否正確?!
    [版主回覆12/24/2010 21:04:21]一般我們在做降解析度的影像,會將對應的區域中的所有點相加,再除以點數,以得到平圴值做為代表。
    所有區域中的點相加,這不就是積分影像中區域和是一樣的嗎!
    只差除以點數,就等於降階影像點的值。
    而金字塔圖層是在已知降比率的狀況下先求值。
    要是計算中途發現有其他比率解析度可能會比較好算,就沒有辦法做。
    對於確定大範圍都沒有用的地方,金字塔圖層還是要去計算。
    積分圖這方面就有優勢,已知大範圍沒有需要的,就不會再做進一步計算。

    回覆刪除
  5. 感謝 回覆!!

    原來Bee大也瞭解surf~

    我一直不瞭解的是!~

    文獻中所說的是利用hessian matrix
    搭配積分影像 建立出了影像金字塔!
    (scale隨著hessian mask大小不同而建立!)

    我想當你用同一張強度相同的灰階影像
    而不使用積分影像 應該也是可行的?

    因為每一個octave都先做了4個mask(9,15,21,27)去掃描整張灰階影像
    第二個octave也依據前兩個mask 忘下建立(15,27,39,51)

    因此每個mask對應到不同尺不下 存下特徵點座標 就可以做到 尺度不變!

    因此不需要積分影像?!

    請問Bee大 我這樣解讀對嗎?!

    ps.積分影像的背後義意 還是不太明白~
    bee大可否舉個 例子?!
    [版主回覆12/25/2010 21:39:26]你要注意。模板內的影像是要做積分後才能用在Hessian matrix上計算,只是有些區域要乘係數(1,-1 or -2)。若是沒有積分影像,到時還是要做連加的計算。
    而積分影像只要取出四個角落值就可以得到要的模板內的影像值。

    回覆刪除
  6. Bee大~ 我想我的問題就是卡在這裡

    hessian matrix 經過了離散化及切割 之後簡化

    才產生了hessian matrix這個遮罩

    我知道文獻中有說明要經過積分影像 再對影像做hessian

    bee 大 也說了積分影像只要取出四個角落值就可以得到要的模板內的影像值。

    因次所選取的 還是原影像的pixel

    因此若是沒有積分影像,到時還是要做連加的計算。 我想我是不懂這一個地方!

    如果沒積分影像 怎麼還會需要做連加的動作??

    我想我就差這一步 就能暸解 積分影像了! 還請大大 解答!
    [版主回覆12/27/2010 22:00:49]我覺得您的問題是出在Sacle Space上。因為Hessian Martix本身不具尺度不變的能力。所以才在不同的Scale Space上進行計算。才會有不同大小的模板。
    這樣子,我看起來問題回到原點。
    也就是因為Scale Space的關係,才會使用金字塔圖層及積分影像法。
    但您對於Scale Space是一點感覺也沒有。
    您要不要回去看SIFT相關論文,SURF的原理和它相去不遠。對於Scale Space您要再多用點心思。
    我還要想想,看如何把Scale Space說明白一點。

    回覆刪除
  7. 謝謝妳的建議 我去看看SIFT!! 感謝!!
    [版主回覆12/28/2010 10:22:15]我想了一下。您先看看Image Pyramid的資料。
    Google可以找到一篇"Pyramid methods in image processing"的文章。先看一下,這樣可能對Scale Space會有點感覺。
    我是不知您是否做過簡單影像搜尋的程式,有使用Image Pyramid的程式加速非常多。
    簡單影像搜尋:在照片上剪下一塊圖,回去比對,回報座標。
    有做過才會真的了解,所謂的計算上的"精簡"到底是差多少。

    回覆刪除