摘 要: 在闡述了嵌入式地形三維顯示系統(tǒng)的透視投影變換算法的基礎(chǔ)上,著重論述了基于FPGA設(shè)計實現(xiàn)透視投影變換算法的方法,并在XILINX公司的SPARTAN XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E" title="XC3S500E">XC3S500E上實現(xiàn)了本算法的基本功能。實驗數(shù)據(jù)表明該硬件算法系統(tǒng)具有實時性高和時間開銷低等優(yōu)點。
關(guān)鍵詞: FPGA;透視投影變換;時間開銷
大規(guī)模地形繪制技術(shù)一直是國內(nèi)外虛擬現(xiàn)實領(lǐng)域的研究熱點,被廣泛應(yīng)用于戰(zhàn)場仿真、飛行模擬、電子地圖和地形漫游等方面。目前基于PC平臺上的地理信息系統(tǒng)技術(shù)已比較成熟,廣泛應(yīng)用的有美國的MapInfo和ArcInfo,國內(nèi)慧圖公司TopMap和中國地質(zhì)大學(xué)的MapGIS等。而隨著嵌入式系統(tǒng)的廣泛應(yīng)用,三維地理信息系統(tǒng)小型化已成為新的研究方向。相比之下,國內(nèi)嵌入式地形三維的GIS應(yīng)用系統(tǒng)目前還比較少。
本文在研究地形三維顯示算法的基礎(chǔ)上,設(shè)計了一個面向嵌入式系統(tǒng)的透視投影變換算法模塊,實現(xiàn)基于FPGA上的算法加速,極大提高了嵌入式系統(tǒng)下的數(shù)據(jù)處理速度。
1 透視投影變換的原理及算法
在實現(xiàn)地形三維建模過程中,一個重要步驟就是通過透視投影變換實現(xiàn)世界坐標(biāo)(project coordinates)向像(視)點坐標(biāo)(view coordinates)的過渡。世界坐標(biāo)中的各類地形數(shù)據(jù)參數(shù)正是通過透視投影變換,轉(zhuǎn)換為視域坐標(biāo)內(nèi)相應(yīng)點的二維數(shù)據(jù),進而加以渲染形成二維坐標(biāo)系統(tǒng)上的三維立體地形圖像。
1.1 透視投影變換的坐標(biāo)轉(zhuǎn)換
所謂透視投影變換,就是世界坐標(biāo)到視點坐標(biāo)的空間轉(zhuǎn)換步驟,其作用是將x和y坐標(biāo)映射到投影平面的正確位置上,同時保持深度信息。如圖1所示,S為視點(觀察者),地面上一點A在像平面上的映射點為α。o-xy為像平面坐標(biāo)系,用以表示像點在像平面的位置。其坐標(biāo)原點定義為像點o;S-xyz為像空間坐標(biāo)系,它是用來表示像點在像空間的位置的右手空間直角坐標(biāo)系統(tǒng)。OT-XTYTZT為地面輔助坐標(biāo)系,是一種過渡性的地面坐標(biāo)系統(tǒng)。透視投影變換算法最終實現(xiàn)地面坐標(biāo)OT-XTYTZT上的點到像平面坐標(biāo)o-xy的空間映射。
1.2 投影變換數(shù)學(xué)算法實現(xiàn)
在透視投影過程中,需要定量描述視點的姿態(tài)和空間位置,從而確定投影像片和地面之間的幾何關(guān)系。為了確定投影光束在地面輔助坐標(biāo)系中的位置,需要有3個線元素和3個角元素,共需6個元素。其中3個線元素是投影中心S在地面輔助坐標(biāo)系中的坐標(biāo)(XS,YS,ZS),用來確定投影光束頂點在地面輔助坐標(biāo)系中的空間位置;3個角元素用來確定投影光束在地面輔助坐標(biāo)系中的姿態(tài)。為便于說明,在圖1左圖中引入θ-α-kv角元素系統(tǒng),如右圖所示,兩圖的坐標(biāo)定義一致。
根據(jù)視域范圍內(nèi)地面點與像片映射點間的坐標(biāo)關(guān)系,使用θ-α-kv角元素系統(tǒng),將S-XYZ坐標(biāo)系依次繞Z-X-Y軸相繼旋轉(zhuǎn)θ-α-kv角之后,與視點的像空間坐標(biāo)系S-xyz重合。通過空間坐標(biāo)的旋轉(zhuǎn)轉(zhuǎn)換,可以推出如下的坐標(biāo)轉(zhuǎn)換公式:
假定:視點S在地輔坐標(biāo)系OT-XTYTZT中的坐標(biāo)為(XS,YS,ZS),地面點A在地輔坐標(biāo)系OT-XTYTZT中的坐標(biāo)為(XM,YM,ZM),像點α在像空間坐標(biāo)系S-xyz中的坐標(biāo)為(x,y,z);其中z=-f。
地面點A在坐標(biāo)系S-XYZ中的坐標(biāo)為(XM-XS,YM-YS,ZM-ZS)。經(jīng)過推導(dǎo),得到整理后的投影變換公式:
最后進行平面相似變換,變換為屏幕坐標(biāo)(xc,yc),其轉(zhuǎn)換方法如下(定義:屏幕顯示分辨率范圍是ROW_MAX*COL_MAX):
經(jīng)過取整以后即為屏幕上顯示的二維坐標(biāo)。
2 FPGA硬件電路組成
系統(tǒng)硬件包括片內(nèi)的SRAM數(shù)據(jù)緩存區(qū),邏輯控制單元和透視投影變換算法模塊三部分,其核心設(shè)計為透視投影算法部分。算法硬件加速系統(tǒng)實現(xiàn)結(jié)構(gòu)框架如圖2所示。
該算法加速模塊對輸入的地形三維數(shù)據(jù)進行相應(yīng)的透視投影變換運算。它的功能正是基于FPGA的并行處理機制和流水線的工作模式來實現(xiàn)三維數(shù)據(jù)的高速空間坐標(biāo)轉(zhuǎn)換。系統(tǒng)包括兩組片內(nèi)的SRAM,分別位于數(shù)據(jù)輸入、輸出端及該系統(tǒng)的核心算法單元-透視投影變換運算,以及相應(yīng)的時鐘、邏輯控制模塊。
嵌入式處理器通過片外的FIFO芯片實現(xiàn)對硬件加速模塊的數(shù)據(jù)輸入和讀取。FPGA數(shù)據(jù)處理模塊的通信接口則采用乒乓機制協(xié)調(diào)片內(nèi)的SRAM緩存區(qū)資源與片外FIFO的數(shù)據(jù)交互。即FPGA核心算法模塊讀取1#數(shù)據(jù)時,F(xiàn)IFO寫2#數(shù)據(jù);反之,算法模塊讀取2#數(shù)據(jù)時,F(xiàn)IFO寫1#數(shù)據(jù)。這種交互模式提高了系統(tǒng)對地形數(shù)據(jù)的采集、透視投影變換運算和二維數(shù)據(jù)的實時反饋速度。
2.1 透視投影變換算法的實現(xiàn)結(jié)構(gòu)
透視投影變換最終實現(xiàn)的是世界坐標(biāo)上的高程數(shù)據(jù)點到視野屏幕坐標(biāo)的二維空間轉(zhuǎn)換。地形三維的建模過程正是通過頻繁調(diào)度該算法來實現(xiàn)龐大數(shù)據(jù)量的空間轉(zhuǎn)換,因此存在很高的時間開銷。
系統(tǒng)正是利用流水線設(shè)計來實現(xiàn)多層數(shù)據(jù)邏輯運算的并行處理,從而達到數(shù)據(jù)的高速緩存和邏輯控制,并最終縮短三維數(shù)據(jù)的處理時間。針對FPGA硬件邏輯特點,該算法模塊在對數(shù)據(jù)精度進行估計以后,通過左移8位來實現(xiàn)定點運算,大大加速了原算法。內(nèi)部的邏輯設(shè)計主要涉及運算器的運用及時序和觸發(fā)信號的控制。下面詳細介紹算法內(nèi)部各個邏輯單元的實現(xiàn)。
2.1.1 向片內(nèi)SRAM寫數(shù)據(jù)的電路
首先說明算法數(shù)據(jù)接口的SRAM緩沖區(qū),即每組片外的FIFO對應(yīng)一個片內(nèi)的SRAM緩存區(qū)。本文以數(shù)據(jù)輸入段為例說明該接口設(shè)計對數(shù)據(jù)的存儲和讀取過程,在FPGA內(nèi)部電路圖截取其接口的一組SRAM來進行描述,如圖3所示。
圖中的din[15:0]表示輸入端FIFO緩存的16位數(shù)據(jù)線,只要FIFO的非空信號(int_ram)有效,該接口電路就不斷從FIFO中讀取地形數(shù)據(jù),cs為來自模塊的全局時鐘信號。通過地址發(fā)生器ADDR_1、ADDR_2、ADDR_3產(chǎn)生存儲地址,F(xiàn)DE寄存器分別接收來自FIFO的地形數(shù)據(jù)。在數(shù)據(jù)寫入SRAM的同時,啟動數(shù)據(jù)個數(shù)計數(shù)器(COUNT),在接收完一個完整單點的三維數(shù)據(jù)(X、Y、Z坐標(biāo))后,啟動計數(shù)器(COUNT)的第二寄存區(qū)使能信號CE,用于FDEII接收門限(Gate)的開啟,緩存來自FDEI的數(shù)據(jù)。在延遲半個cs時鐘周期后,COUNT計數(shù)單元輸出第三寄存區(qū)FDEIII的讀取信號rd,該信號用來保證算法讀取穩(wěn)定和準(zhǔn)確的三維坐標(biāo)數(shù)據(jù)。本文設(shè)計3個階段的寄存區(qū)分別實現(xiàn)的是:FDEI用于存儲FIFO輸出的16位串行數(shù)據(jù);FDEII用于核心算法的3個并行數(shù)據(jù)的輸出;而FDEIII則實現(xiàn)三維數(shù)據(jù)的穩(wěn)定讀取,并將可靠的地形數(shù)據(jù)輸入下一核心算法模塊。圖4為該電路的時序仿真圖。
2.1.2 透視投影變換核心算法電路
通過對透視投影變換原理的分析可知,坐標(biāo)轉(zhuǎn)換過程中涉及空間坐標(biāo)旋轉(zhuǎn),數(shù)學(xué)運算上表現(xiàn)為矩陣的乘積。但由于地形三維數(shù)據(jù)空間旋轉(zhuǎn)的復(fù)雜性,實現(xiàn)過程中不僅涉及大量的矩陣運算,而且要考慮空間轉(zhuǎn)換的方向性,因此在電路的算法設(shè)計上必須采取一些輔助的方法來保證數(shù)據(jù)流的正確。數(shù)據(jù)符號矯正電路、數(shù)據(jù)位截取電路和時序控制電路是本系統(tǒng)的主要輔助手段,在很大程度上保證了數(shù)據(jù)處理的準(zhǔn)確和高速。
(1)運算器電路設(shè)計
由數(shù)據(jù)有效位(clk_en)啟動的運算模塊接收來自緩存區(qū)的數(shù)據(jù)。進入算法模塊的數(shù)據(jù),總共進行3次空間坐標(biāo)轉(zhuǎn)換,將來自世界坐標(biāo)的三維數(shù)據(jù)旋轉(zhuǎn)至屏幕坐標(biāo)的相應(yīng)映射點。該運算單元主要涉及大量的乘法運算器,通過空間轉(zhuǎn)換系數(shù)CONST實現(xiàn)無符號乘法運算,同時輸出數(shù)據(jù)標(biāo)志位const_int,多個乘法器可以并行處理。圖5右為設(shè)計的標(biāo)志位產(chǎn)生電路,各個運算單元的標(biāo)志位通過與門之后產(chǎn)生總的讀取信號int_all。這里使用一個讀取請求信號,其原因是多個讀取標(biāo)志位會由于信號延遲問題發(fā)生沖突等情況,使讀數(shù)據(jù)混亂,不利于下一步數(shù)據(jù)的讀取存儲。
(2)數(shù)據(jù)符號位矯正電路
由于乘法器中采用無符號的邏輯運算,因此需要對乘法器輸出值進行邏輯加減后的數(shù)據(jù)結(jié)果進行符號位(T_a,T_c)的判斷,并通過并置符(&)輸出符號標(biāo)志位(T_mula),對下一步除法器的輸出結(jié)果進行數(shù)據(jù)符號位的檢測并矯正,從而實現(xiàn)有符號數(shù)據(jù)的運算過程無符號化,更加適合FPGA的邏輯結(jié)構(gòu)特點,提高硬件邏輯中的數(shù)據(jù)運算速率。圖6為矯正電路及其時序仿真圖。
(3)各運算單元的時序分配
流水線的設(shè)計特別適合高速的數(shù)據(jù)流操作。其最大特點是數(shù)據(jù)流在各個步驟的處理從時間上看是連續(xù)的,關(guān)鍵在各個步驟時序設(shè)計的合理安排,尤其對于復(fù)雜的混合邏輯運算的電路,時序安排不當(dāng),容易造成后級數(shù)據(jù)丟失或溢出。
圖7中的邏輯時序控制設(shè)計,在綜合片內(nèi)的混合邏輯周期后,實現(xiàn)了算法中步驟的單周期運行,不僅滿足了流水線時鐘的有序分配,同時以最少周期實現(xiàn)單步驟的算法運算,極大地提高了整個系統(tǒng)的實時性。
3 仿真結(jié)果與說明
應(yīng)用本系統(tǒng)的硬件實現(xiàn)算法,本文對同一區(qū)域的地形三維數(shù)據(jù)進行了數(shù)據(jù)誤差和時間損耗測試。
3.1 準(zhǔn)確性分析
根據(jù)FPGA的硬件邏輯特點采取了浮點轉(zhuǎn)定點方法,在整個地形三維透視投影變換的運算中,其前后的結(jié)果數(shù)據(jù)誤差分析如圖8。
圖8(a)為提供測試的三維地形數(shù)據(jù);圖8(b)為采用軟件設(shè)計實現(xiàn)的浮點型透視投影變換算法,X軸、Y軸的數(shù)據(jù)為空間轉(zhuǎn)換后各點對應(yīng)的二維坐標(biāo);圖8(c)為采用VHDL編程在FPGA上實現(xiàn)的定點型透視投影變換算法;圖8(d)則是(b)、(c)兩圖各相應(yīng)點的坐標(biāo)數(shù)據(jù)誤差。從中可以得出:(1)即使在地形數(shù)據(jù)高程值大的區(qū)域,其精度誤差也不超過5個單位數(shù)值。平均精度誤差數(shù)據(jù):X軸為1.7367,Y軸為2.2183。(2)通過增加平移仍可繼續(xù)縮小誤差值。
3.2 時間損耗分析
根據(jù)透視投影變換算法,測試了該算法運用軟件編程在ARM系統(tǒng)下的運行時間,并與采用VHDL編程在硬件架構(gòu)下的算法消耗時間進行對比。測試環(huán)境:ARM處理器SAMSUNG S3C2410,主頻為203 MHz,DMA傳輸頻率101.4 MHz,F(xiàn)IFO讀寫時鐘頻率101.4 MHz,F(xiàn)PGA時鐘周期為101 MHz。對同一地形數(shù)據(jù)的時間測試參數(shù)如圖9。圖9(a)為在ARM系統(tǒng)下采用軟件編程運行該算法,調(diào)用次數(shù)為55 651時,耗時13.23 s,如采用本系統(tǒng)的運行數(shù)據(jù),則需調(diào)用180 880次,耗時達到43 s;圖9(b)則是硬件架構(gòu)下的算法時間損耗,調(diào)用55 651時,耗時6.1 ms,調(diào)用180 880次,只需19.8 ms。
實驗結(jié)果表明:采用基于FPGA硬件架構(gòu)的透視投影變換算法,在損失數(shù)據(jù)部分精度的條件下,數(shù)據(jù)運行時間損耗大大縮減,這將有利于提高嵌入式地形三維顯示系統(tǒng)的實時性。
參考文獻
[1] 藍榮欽,李淑霞,劉陽,等.地理信息系統(tǒng)的發(fā)展現(xiàn)狀和趨勢[J].地理空間信息,2007,2(1):8-11.
[2] David F.Rogers著.計算機圖形學(xué)的算法基礎(chǔ).石教英,彭群生譯.北京:機械工業(yè)出版社,2005.
[3] Xilinx.Using embedded multipliers in spartan-3 FPGAs.2005,3.
[4] Uwe Meyer-Baese著.數(shù)字信號處理的FPGA實現(xiàn).劉凌譯.北京:清華大學(xué)出版社,2006.
[5] Xilinx.Using block RAM in spartan-3 generation FPGAs.2005,3.
[6] GOSLIN G.Using Xilinx FPGAs to design custom digitalsignal processing devices in proceeding of the DSP.SpringerBerlin,2006.
[7] TREICHLER J,JOHNSON C,LARIMORE M.Theory anddesign of adaptive filters.Prentice Hall,2001.
[8] POLTMANN R.Conversion of the delayed LMS algorithminto the LMS algorithm.IEEE signal Processing letters,2005.