Bee最近被問到視差值如何計算,還是貼圖舉例說明比較容易。
首先找二張有視差的圖:
相減圖片:
其實有人從相減的圖片中就已經在猜視差值。
在數學計算上面,要找出最像的地方。最簡單的就是做移位再相減取絕對值。
每移動一個點,就會產生一個值。
但因單點判定有可能誤判,所以通常是連同附近的圖一併做計算,將所有的差值和記錄下來。
如果圖片夠像,其差值和就會最小。所以找出最小值是移位多少pixel,其移位值就是視差值。
以下為x=71,y=106(Matlab座標)附近取出的sad值分布圖:
x軸為位移,y軸為和。
可以知道此處以15為最低的值。故視差即為15。
這只是計算一個點,其實是整個圖每一點都要算,所以運算量很大。
以下為Matlab程式:
close all;clear all;
l_img=imread('corridorL.bmp');
r_img=imread('corridorR.bmp');
figure;imshow(l_img);
figure;imshow(r_img);
l=double(l_img);
r=double(r_img);
d=l-r;
figure;imshow(uint8(abs(d)));
[hight,weight]=size(l_img);
range=8;
search=64;
x=71;
y=106;
m=1;
if( search > weight-2*range )
search = weight-2*range;
end
while(m <= search)
n=1;
sad(m)=0;
while( n <= 2*range+1)
sad(m)=sad(m)+abs(l(x+n,y)-r(x-m+n-1,y));
n=n+1;
end
m=m+1;
end
figure;plot(sad);
2010年1月26日 星期二
2010年1月25日 星期一
種瓜得豆?
最近在想,Bee做什麼都是半路出家。常常種瓜得豆,不知是心不專,還是命如此?
大學讀化學系,本想考的是電機,分數上不去,也只好讀。後來因為要考材料所,去電機系上工程數學的課程,結果讀了一個電機的雙學位。然後去考電機研究所,結果沒上,只好去當兵。
後來化學系的同學都在LCD面板業賺到了他們的第一桶金,而Bee還在寫組合語言努力中。
本想說大學學了自動控制,可以在控制上發揮,結果光是電腦語言就搞不定。
為了搞定電腦,自學編譯器原理及作業系統理論。這原本是資工系的大難題,Bee也花了數年才會。
後來發現FPGA興起,就為了去學而換公司。差不多用了二年半,因公司政治而中斷,回到了Bee原先的嵌入式系統去做維護工作。
維護對研發人員本就不是長期的飯票,所以改去讀書,想改走機器人研究。其實這是嵌入式系統的加強,又有機會整合FPGA。
讀書的學科有一半和影像處理相關,主要是考量機器人中就以影像最有發展。本來是想以FPGA解決機器人環境認知問題。
中途發現以GPGPU做影像處理比FPGA來得快,於是去參加比賽。
後來指導教授換校,我只能另找,找另一位有做機器人控制的教授。結果Bee現在人在機器人控制的影像組,搞起影像處理了。
種瓜得瓜,種豆得豆,在人生的道路上好像不是。還是我耕耘得不夠久就換,所以長不出原先種的?
真的要好好檢討了。
大學讀化學系,本想考的是電機,分數上不去,也只好讀。後來因為要考材料所,去電機系上工程數學的課程,結果讀了一個電機的雙學位。然後去考電機研究所,結果沒上,只好去當兵。
後來化學系的同學都在LCD面板業賺到了他們的第一桶金,而Bee還在寫組合語言努力中。
本想說大學學了自動控制,可以在控制上發揮,結果光是電腦語言就搞不定。
為了搞定電腦,自學編譯器原理及作業系統理論。這原本是資工系的大難題,Bee也花了數年才會。
後來發現FPGA興起,就為了去學而換公司。差不多用了二年半,因公司政治而中斷,回到了Bee原先的嵌入式系統去做維護工作。
維護對研發人員本就不是長期的飯票,所以改去讀書,想改走機器人研究。其實這是嵌入式系統的加強,又有機會整合FPGA。
讀書的學科有一半和影像處理相關,主要是考量機器人中就以影像最有發展。本來是想以FPGA解決機器人環境認知問題。
中途發現以GPGPU做影像處理比FPGA來得快,於是去參加比賽。
後來指導教授換校,我只能另找,找另一位有做機器人控制的教授。結果Bee現在人在機器人控制的影像組,搞起影像處理了。
種瓜得瓜,種豆得豆,在人生的道路上好像不是。還是我耕耘得不夠久就換,所以長不出原先種的?
真的要好好檢討了。
2010年1月21日 星期四
使用GPU-Z看GPU狀況
想知道GPU有多操,所以找來這個軟體看看。結果還很好玩。
主要畫面:
在玩Game時,還可以看到不同形態的Game具有不同影響。
也可以觀察溫度的狀況,來了解功耗。
其他檢測:
不過有些資訊也是有這個GPU-Z才得以解釋。
像是在CUDA中測效能時,必須利用GPU內部timer來測。但有一行程式一直無法理解,其註解寫著Warm up。
結果一看到GPU-Z去監視CUDA運行時的利用率,我馬上理解出了什麼事。
原來GPU沒事要進入省電狀況,主要是調整Clock的方式來做。
在玩Game時會動態調整clock及負載狀況。
而在使用CUDA模式時會直接跳到最高的clock。所以需要一段時間做Warm up。
GTX275測得資料:
GTX275感測器狀況:
可以發現多了幾個溫度感知。
GTX275執行CUDA時狀況:
GTX275玩Game時的狀況
沒想到Game沒有操到滿。
GTX275執行完CUDA後很快回復到省電模式。
追加在ION上測到的資料
主要畫面:
在玩Game時,還可以看到不同形態的Game具有不同影響。
也可以觀察溫度的狀況,來了解功耗。
其他檢測:
不過有些資訊也是有這個GPU-Z才得以解釋。
像是在CUDA中測效能時,必須利用GPU內部timer來測。但有一行程式一直無法理解,其註解寫著Warm up。
結果一看到GPU-Z去監視CUDA運行時的利用率,我馬上理解出了什麼事。
原來GPU沒事要進入省電狀況,主要是調整Clock的方式來做。
在玩Game時會動態調整clock及負載狀況。
而在使用CUDA模式時會直接跳到最高的clock。所以需要一段時間做Warm up。
GTX275測得資料:
GTX275感測器狀況:
可以發現多了幾個溫度感知。
GTX275執行CUDA時狀況:
GTX275玩Game時的狀況
沒想到Game沒有操到滿。
GTX275執行完CUDA後很快回復到省電模式。
追加在ION上測到的資料
2010年1月5日 星期二
顯示卡升級為GTX275
因應顯示卡瓦數及接頭,一併更換電源供應器,升級到550W。
Power Supply套件。
本次主角Galaxy GTX275。
顯示卡套件。
顯示卡本體,這個很大。之前看照片還沒有發覺。也有點重量。重點是Bee要雙風扇。
輸出界面。
有五支熱導管。
裝進機殼後。因為卡很大,還要用特定角度才進得去。這台電腦也升到頂了,記憶體也是滿的,最多換硬碟了。
Power Supply套件。
本次主角Galaxy GTX275。
顯示卡套件。
顯示卡本體,這個很大。之前看照片還沒有發覺。也有點重量。重點是Bee要雙風扇。
輸出界面。
有五支熱導管。
裝進機殼後。因為卡很大,還要用特定角度才進得去。這台電腦也升到頂了,記憶體也是滿的,最多換硬碟了。
2009年12月24日 星期四
CUDA新書到
Bee之前都是自己收集資料,看原文去理解。所以差不多是遇到什麼再去查。
終於有本比較集中資料的書了。常用的運算法也都有解釋。雖然Bee也查的差不多了。
不過買了除了自己查外,拿來教人也是真的。
隨著CUDA運算的流行,實驗室影像組的CUDA人員正在擴張中。
除了影像運算外,Bee本身就是控制組的人,也很想用到Robot控制上。
其中最大的原因是GPGPU的價格低到可以和影像處理的DSP差不多了。
一台使用Atom+ION的NetPC也很合適於控制Robot。
看看控制組何時也想用用CUDA了。
2009年12月16日 星期三
acer小主機
Bee因為有使用P2P下載軟體,使用四核心電腦來用實在有點耗電,所以買了atom處理器的小主機,價格為7xxx元。
不過因為有之前買筆電的經驗,所以決定買具有獨立顯示晶片的機種。
其實能選的不多,只能選用ION晶片。
最後買了acer小主機。
後來才和同事的小筆電比一下效能。
以atom來說是差不了太多。都可以很順的跑Office。
但玩Facebook就不一樣了。
ION晶片可以處理四個Facebook網頁,小筆電第二頁就不太行了。
可見獨立顯示晶片對於現代電腦的重要性。
當時同事說小筆電只是上網及打報告,結果Facebook流行起來,又不行了。
不過當時拿到公司去安裝作業系統時,發現小主機跑得比公司給我的電腦快。
CPU等級沒有比較好,但RAM及HDD都是比較快的,所以整體表現就比較好。
所以拿公司電腦去做PCI卡上的FPGA程式開發是對的,讓它早死早超生吧!
看"遊戲編程精粹6"心得
這篇不太能稱得上是心得。
主要是驚訝於2006年的書,已經預測了2009年Bee所使用的技術。
Bee目前有用到的且書上提到的有:
OpenMP,
OpenCV,
Lua,
GPU,
人工智慧
可見得遊戲上所使用的軟體技術是相當先進的。目前才在Bee的使用上開花結果。
但Bee更相信所謂的專家,真的有預測正確,只是有多少人看出來並願意去相信。
早個一二年去相信,也許整個狀況將大不相同了。
訂閱:
文章 (Atom)























