導航:首頁 > 源碼編譯 > 偽彩色演算法

偽彩色演算法

發布時間:2022-11-15 03:10:01

① 顯卡的結構及工作原理

顯卡的結構和工作原理

顯卡是目前大家最為關注的電腦配件之一了,他的性能好壞直接關繫到顯示性能的好壞及圖像表現力的優劣等等。然而許多初學者對顯卡這個東西並不是十分了解的,下面筆者搜集了一批資料並以圖解的形式對顯卡結構做一簡單的介紹,希望你看後能對顯卡有一定的了解。
顯卡的基本結構
顯卡的主要部件包括:顯示晶元,顯示內存,RAMDAC等。
顯示晶元:一般來說顯卡上最大的晶元就是顯示晶元,顯示晶元的質量高低直接決定了顯示卡的優劣,作為處理數據的核心部件,顯示晶元可以說是顯示卡上的CPU,一般的顯示卡大多採用單晶元設計,而專業顯卡則往往採用多個顯示晶元。由於3D浪潮席捲全球,很多廠家已經開始在非專業顯卡上採用多晶元的製造技術,以求全面提高顯卡速度和檔次。
顯示內存:與系統主內存一樣,顯示內存同樣也是用來進行數據存放的,不過儲存的只是圖像數據而已,我們都知道主內存容量越大,存儲數據速度就越快,整機性能就越高。同樣道理,顯存的大小也直接決定了顯卡的整體性能,顯存容量越大,解析度就越高。
一:結構--全面了解顯示卡(一)
一.圖解顯示卡。
1.線路板。
顯卡的線路板是顯卡的母體,顯卡上的所有元器件必須以此為生。目前顯卡的線路板一般採用的是6層PCB線路板或4層PCB線路板,如果再薄,那麼這款顯卡的性能及穩定性將大打折扣。另外,大家可看見顯卡的下面有一組「金手指」(顯示卡介面),它有ISA/PCI/AGP等規范,它是用來將顯卡插入主板上的顯卡插槽內的。當然,為了讓顯卡和主機更好的固定,顯卡上需要有一塊固定片;為了讓顯卡和顯示器及電視等輸入輸出設備相連,各種信號輸出輸入介面也是必不可少的。

2.顯卡上常見的元器件。
現在的顯卡隨著技術上的進步,其採用的元器件是越來越少越來越小巧。下面我們給大家介紹幾種顯卡上常見的元器件。
a.主晶元:主晶元是顯示卡的靈魂。可以說採用何種主顯示晶元便決定了這款顯示卡性能上的高低。目前常見的顯卡主晶元主要有nVidia系列及ATI系列等等,如Geforce2 GTS,Geforce2 MX,Geforce3,ATI Radeon等。此外,由於現在的顯卡頻率越來越高工作時發熱量也越來越大,許多廠家在顯卡出廠家已給其加上了一個散熱風扇。
b.顯存:顯存也是必不可少的。現在的顯卡一般採用的是SDRAM,SGRAM,DDR三種類別的顯存,以前常見的EDO等類別的顯存已趨淘汰。它們的差別是--SGRAM顯存晶元四面皆有焊腳,SDRAM顯存只有兩邊有焊腳,而DDR顯存除了晶元表面標記和前兩者不同外,那就是晶元厚度要比前兩者明顯薄。
c.電容電阻:電容電阻是組成顯卡不能或缺的東西。顯卡採用的常見的電容類型有電解電容,鉭電容等等,前者發熱量較大,特別是一些偽劣電解電容更是如此,它們對顯卡性能影響較大,故許多名牌顯卡紛紛拋棄直立的電解電容,而採用小巧的鉭電容來獲得性能上的提升。電阻也是如此,以前常見的金屬膜電阻碳膜電阻越來越多的讓位於貼片電阻。
d.供電電路:供電電路是將來自主板的電流調整後供顯卡更穩定的工作。由於顯示晶元越造越精密,也給顯卡的供電電路提出了更高的要求,在供電電路中各種優良的穩壓電路元器件採用是少不了的。
e.FLASH ROM:存放顯卡BIOS文件的地方。
f.其它:除此之外,顯卡上還有向顯卡內部提供數/模轉換時鍾頻率的晶振等小元器件。
全面了解顯示卡

PCB板
PCB板是一塊顯卡的基礎,所有的元件都要集成在PCB板上,所以PCB板也影響著顯卡的質量。目前顯卡主要採用黃色和綠色PCB板,而藍色、黑色、紅色等也有出現,雖然顏色並不影響性能,但它們在一定程度上會影響到顯卡出廠檢驗時的誤差率。另外,目前不少顯卡採用4層板設計,而一些做工精良的大廠產品多採用了6層PCB板,抗干擾性能要好很多。PCB板的好壞直接影響顯示的穩定性。
顯示晶元
我們在顯示卡上見到的「個頭」最大的晶元就是顯示晶元,它們往往被散熱片和風扇遮住本來面目,顯示晶元專門負責圖像處理。常見的家用型顯卡一般都帶有一枚顯示晶元,但也有多晶元並行處理的顯卡,比如ATI RAGE MAXX和大名鼎鼎的3dfx Voodoo5系列顯卡。
顯示晶元按照功能來說主要分為「2D」(如S3 64v+)「3D」(如3dfx Voodoo)和"2D+3D"(如Geforce MX)幾種,目前流行的主要是2D+3D的顯示晶元。
位(bit指的是顯示晶元支持的顯存數據寬度,較大的帶寬可以使晶元在一個周期內傳送更多的信息,從而提高顯卡的性能。現在流行的顯示晶元多位128位和256位,也有一小部分64位晶元顯卡。「位」是顯示晶元性能的一項重要指標,但我們並不能按照數字倍數簡單判定速度差異。
顯示內存
顯存也是顯卡的重要組成部分,而且顯存質量、速度、帶寬等的重要性已經越來越明顯。顯存是用來存儲等待處理的圖形數據信息的,解析度越高,屏幕上顯示的像素點也越多,相應所需顯存容量也較大。而對於目前的3D加速卡來說,則需要更多的顯存來存儲Z-Buffer數據或材質數據等。
我們知道,在顯卡工作中,顯示晶元將所處理的圖形數據信息傳送到顯存中,隨後RAMDAC從顯存中讀取數據並將數字信號轉化為模擬信號,輸出到顯示器上。所以,顯存的速度及數據傳輸帶寬直接影響了顯卡的速度。數據傳輸帶寬是指顯存一個周期內可以讀入的數據量影響顯卡的速度。顯存容量決定了顯卡支持的解析度、色深,而刷新率由RAMDAC決定。
顯存可以分為兩大類:單埠顯存和雙埠顯存。前者從顯示晶元讀取數據及向RAMDAC傳輸數據經過同一埠,數據的讀寫和傳輸無法同時進行;顧名思義,雙埠顯存則可以同時進行數據的讀寫與傳輸。目前主要流行的顯存有SDRAM、SGRAM、DDR RAM、VRAM、WRAM等。
RAMDAC(數/模轉換器)
RAMDAC作用是將顯存中的數字信號轉換成顯示器能夠識別的模擬信號,速度用「MHz」表示,速度越快,圖像越穩定,它決定了顯卡能夠支持的最高刷新頻率。我們通常在顯卡上見不到RAMDAC模塊,那是因為廠商將RAMDAC整合到顯示晶元中以降低成本,不過仍有部分高檔顯卡採用了獨立的RAMDAC晶元。
VGA BIOS
VGA BIOS存在於Flash ROM中,包含了顯示晶元和驅動程序間的控製程序、產品標識等信息。我們常見的Flsah ROM編號有29、39(見圖1)和49開頭的3種,這幾種晶元都可以通過專用程序進行升級,改善顯卡性能,甚至可以給顯卡帶來改頭換面的效果。

圖1 VGA BIOS
VGA功能插針
VGA功能插針(見圖2)是顯卡與外部視頻設備交換數據的通道,通常用於擴展顯卡的視頻功能,比如連接解壓卡等,雖然它存在於很多顯卡當中,但利用率非常低。

圖2 VGA插針
VGA 插座(D-SUB)
VGA插座一般為15針RGB介面(見圖3),某些書籍及報刊稱之為D-SUB介面。顯卡與顯示器之間的連接需要VGA插座來完成,它負責向顯示器輸出圖像信號。在一般顯卡上都帶有一個VGA插座,但也有部分顯卡同時帶有兩個VGA插座,使一塊顯示卡可以同時連接兩台顯示器,比如MGA G400DH和雙頭GeForce MX。

圖3 VGA插座
另外,部分顯卡還同時帶有視頻輸入(Video in)、輸出(Video out)端子(見圖4)、S端子(見圖5)或數字DVI介面(見圖6)。視頻輸出埠和S端子的出現使得顯卡可以將圖像信號傳輸到大屏幕彩電中,獲取更佳的視覺效果。數字DVI介面用於連接LCD,這需要顯示晶元的支持。具有這些介面的顯卡通常也可以稱為雙頭顯卡,雙頭顯卡一般需要單獨的視頻控制晶元。現在市場上有售的耕升的GeForce2 ULT顯卡同時擁有DVI介面和S-Video介面,是少見的全能產品。
工作原理

我們必須了解,資料 (data) 一旦離開 CPU,必須通過 4 個 步驟,最後才會到達顯示屏:
1、從匯流排 (bus) 進入顯卡晶元 -將 CPU 送來的資料送到顯卡晶元裡面進行處理。 (數位資料)
2、從 video chipset 進入 video RAM-將晶元處理完的資料送到顯存。 (數位資料)
3、從顯存進入 Digital Analog Converter (= RAM DAC),由顯示顯存讀取出資料再送到 RAM DAC 進 行資料轉換的工作(數位轉類比)。 (數位資料)
4、從 DAC 進入顯示器 (Monitor)-將轉換完的類比資料送到顯示屏 (類比資料)
如同你所看到的,除了最後一步,每一步都是關鍵,並且對整體的顯示效能 (graphic performance) 關系十分重大。
注: 顯示效能是系統效能的一部份,其效能的高低由以上四步所決定,它與顯示卡的效能 (video performance) 不太一樣,如要嚴格區分,顯示卡的效能應該受中間兩步所決定,因為這兩步的資料傳輸都是在顯示卡的內部。第一步是由 CPU 進入到顯示卡裡面,最後一步是由顯示卡直接送資料到顯示屏上,這點要了解。
最慢的步驟就是整體速度的決定步驟 (注: 例如四人一組參加 400 公尺接力,其中有一人跑的特別慢,全組的成績會因它個人而被拖垮,也許會殿後。但是如果他埋頭苦練,或許全隊可以得第一,所以跑的最慢的人是影響全隊成績的關鍵,而不是哪些已經跑的很快的人)。
現在讓我們來看看每一步所代表的意義及實際所發生的事情:
CPU 和顯卡晶元之間的資料傳輸
這受匯流排的種類和匯流排的速度(也就是外頻),主機板和他的晶元組所決定。 目前最快的匯流排是 PCI bus,而 VL bus, ISA, EISA and NuBus (Macs 專用) 效能就比較低。
現在流行的AGP並不是一種匯流排,而只是一種介面方式(注: PCI bus 是 32 bit data path,也就是說 CPU 跟 顯示卡之間是以一次 4 byte 的資料在對傳,其他的 bus 應該是 16 bit data path)。
PCI bus 的最快速度是 33 MHz 。
顯卡晶元和顯存之間的資料傳輸以及從顯存到 RAM DAC 的資料傳輸
我把這兩步放在一起是因為這里是影響顯示卡效能的關鍵所在, 假如你不考慮顯卡晶元的個別差異。
顯示卡的最大的問題就是,可憐的顯存夾在這兩個非常忙碌的裝置之間 (顯卡晶元和 RAMDAC),必須隨時受它們兩個差遣。
每一次當顯示屏畫面改變,晶元就必須更改顯示顯存裡面的資料 (這動作是連續進行的,例如移動滑鼠游標,鍵盤游標......等等)。 同樣的,RAM DAC 也必須不斷地讀取顯存上的資料,以維持畫 面的刷新。 你可以看到,顯存在他們之間被捉的牢牢的。
所以後來出現了一些聰明的做法,像是使用 VRAM, WRAM, MDRAM, SGRAM, EDO RAM, 或增加 video bus 的大小如 32 bit, 64bit, 還有現在剛出現的 128 bit。
解析度越高,從晶元傳到顯存的資料就越多。 而 RAM DAC 從顯存讀取資料的速度就要更快才行。 你可以看到,晶元和和RAM DAC 隨時都在對顯存 進行存取的工作。
一般 DRAM 的速度只能被存取到一個最大值(如 70ns 或 60ns),所以 在晶元結束了存取 (read/write) 顯存之後, 才能換 RAM DAC 去讀取顯存,如此一直反覆不斷。
顯卡的主要術語與參數

一.明白顯卡的常見術語。
了解了顯卡的外表,最後讓我們再來了解一下顯卡的流行術語,這樣對你認識顯卡更有由表及裡的幫助作用。
1.AGP:(ACCELERATED GRAPHICS PORT圖形加速埠)AGP實際上是PCI介面的超集,它做為一種新型介面將顯示卡同主板晶元組進行了直接連接,從而大幅度提高了電腦對3D圖形的處理能力。在處理大的紋理圖形時AGP顯卡除了使用卡上的顯存外還可以通過DIME直接內存執行功能使用系統內存,AGP顯卡視頻傳輸率在X2模式下就可達到533MB/S。
*AGP8X:AGP8X是Intel制定的新一代的圖像傳輸規格,它將作為下一代的個人電腦及工作站的新顯示標准。AGP (Accelerated Graphics Port)是由Intel公司所制訂的顯示介面標准,速度已由最初的AGP 1x (264 MBytes/sec,3.3v)到現在的AGP 4x (1 GBytes/sec,1.5v),因為AGP擁有高速頻寬,所以廣受眾多顯示晶元廠家的支持,推出了很多支持AGP 4X/PRO的不同產品來以滿足用戶對圖像運算、高畫質要求的要求。Intel宣布的AGP 8x,依舊使用32-bit的匯流排架構,而速度方面則提升至533 MHz,及支持2GBytes/sec,是AGP 4x的兩倍。速度的提升,即代表了顯示晶元製造商能更好的利用AGP 8x的優點來充份發揮顯示晶元的效能。
2.API。
API全稱為(Application Programming Interface)應用程序介面。
API的原理是當某一個應用程序提出一個制圖請求時,這個請求首先要被送到操作系統中,然後通過GDI(圖形設備介面)和DCI(顯示控制介面)對所要使用的函數進行選擇。而現在這些工作基本由Direct X來進行,它遠遠超過DCI的控制功能,而且還加入了3D圖形API(應用程序介面)和Direct3D。顯卡驅動程序判斷有那些函數是可以被顯卡晶元集運算,可以進行的將被送到顯卡進行加速。如果某些函數無法被晶元進行運算,這些工作就交給CPU進行(影響系統速度)。運算後的數字信號寫入幀緩存中,最後送入RAMDAC,在轉換為模擬信號後輸出到顯示器。由於API是存在於3D程序和3D顯示卡之間的介面,它使軟體運行在硬體之上,為了使用3D加速功能,就必須使用顯示卡支持的API來編寫程序,比如Glide, Direct3D或OpenGL等等來獲得性能上的提升。
常見的API主要有以下幾種:
*.Direct X。
說起顯卡我們不得不說說它。這是微軟公司專為PC游戲開發的API(應用程序介面),它的主要特點是:比較容易控制,可令顯卡發揮不同的功能,並與WINDOWS系統有良好的兼容性。
*.OpenGL。
OpenGL開放式圖形界面是由SG公司開發用於WINDOWS,MACOS,UNIX等系統上的API。它除了提供有許多圖行運算處理功能外,其3D圖形功能很強,甚至超過Direct X很多。
*.Glide。
這是3DFX公司首先在VOODOO系列顯卡上應用的專用3D API,它可以最大限度的發揮VOODOO顯示晶元的3D圖形處理能力。由於它很少考慮兼容性,所以工作效率要比OpenGL和D3D要高。
3.RAMDAC。
RAMDAC(RANDOM ACCESS MEMORY DAC,數模轉換晶元)它的作用是將電腦內的數字信號代碼轉換為顯示器所用的模擬信號的東西。此晶元決定顯示器所表現出的解析度及圖像顯示速度。RAM DAC根據其寄存器的位數分為8位,16位,24位等等,8位RAMRAC只能顯示256色,而真彩卡支持的16M色,它的RAMRAC必須為24位。另外,RAM DAC的工作速度越高,則相應的顯示速度也越快,如在75Hz的刷新率和1280X1024的解析度下RAM DAC的速度至少要達到150MHz。
4.顯存。
顯存,顯示存儲器,其作用是以數字形式存儲圖行圖像資料。通過專門的圖形處理晶元可直接從卡上的顯存調用有關圖形圖像資料,從而減輕了CPU的負擔縮短了通過匯流排傳輸的時間,提高了顯示速度,可以說顯存的大小與速度直接影響到視頻系統的圖形解析度,色彩精度和顯示速度。常見的顯存和當時主流的內存使用情況基本相同
顯示卡(Display Card),也叫顯卡,是電腦最基本組成部分之一。顯卡控制著PC的臉面——顯示器,使它能夠呈現供我們觀看的字元和圖形畫面。早期的顯卡只是單純意義的顯卡,只起到信號轉換的作用;目前我們一般使用的顯卡都帶有圖形加速功能,所以也叫做「圖形加速卡」。本期我們將為大家介紹有關顯示卡的知識。
顯示卡通常由匯流排介面、PCB板、顯示晶元、顯存、RAMDAC、VGA BIOS、VGA功能插針、VGA插座及其他外圍元件構成
主要參數

CGA (COlor Gaphics Adapter:彩色圖形適配卡〕
IBM公司於1982年開發並推出了一種可支持彩色顯示器的顯示即CGA卡,它能夠顯示16種顏色,可達到640X200的解析度,可工作於文本和圖形方式下。
EGA (Enhanced Graphics Adapter:增強圖形適配卡)
在CGA的基礎上IBM公司於1984年推出了EGA卡。EGA將顯示解析度提高到640X350,同時與CGA完全兼容,可顯示的顏色數據提高到了64種顯示內存也擴展到256K。
VGA (Video Graphics Array:視頻圖形陣列)
1987年IBM公司在PS/2 (微通道計算機)電腦上,首次推了VGA卡,今天雖已難覓PS/2的影蹤,但VGA早已成為業界標准。VGA達到了640X480的解析度,並與MDA、CGA、EGA保持兼容,它增加二個6位DAC轉換電路從而首次實現了從顯示卡上直接輸出R.G.B模擬信號到顯示器,可顯示的顏色增加到256色並且可支持大於256K的顯示存儲器容量。
SVGA (Suoer VGA 超級視頻圖形陣列)
SVGA是由VESA(視頻電了標准學會,一個由眾多顯示卡生產而所組成的聯盟)1989年推出的。它規定,超過VGA 640X480解析度的所有圖形模式均稱為SVGA,SVGA標准允許解析度最高達到1600X1200,顏色數最高可達到16兆(1600萬)色。同時它還規定在800X600的解析度下,至少要達到72Hz的刷新頻率。
IBM在VGA的基礎上,1989年推出了8514A,它可以達到1024X768的解析度是對VGA的低解析度的提高,但由於這一標准只能用於IBM的PS/2電腦其技術資料不對外公開,並且採用了導致高閃爍的隔行掃描方式,因此,未能像IBM過去的幾個產品那樣成為業界標,很快就被淘汰了。
XGA (Extended Graphic Array:增強圖形陣列)
由於8514A的失敗,IBM在1990年又推出了XGA,XGA與8514A同樣達到了1024X768的解析度,在64OX480時可以達到65536種顏色。它最大的改進是允許逐行掃描方式並且針對Windows的圖形界面操作作了很大的改進,用硬體方式實現了圖形加速,如位塊傳輸、畫線、硬體子圖形等,它還使用了VRAM作為顯示存儲器,因此大大提高了顯示速度。
顯示解析度 (Resolution)
指視頻圖像所能達到的清晰度,由每幅圖像在顯示屏幕的水平和垂直方向上的像素點數來表示比如說某顯示解析度為640X480。就是說凡水平方向上有640個像素、垂直方向上有480個像素。
像素(Pixel)
Pixel是Picture element (圖像元素)的簡寫。像素是組成顯示屏幕上的點,是顯示畫面的最小組成單位。
點距(Dot Pitch)
指顯示屏幕上同色熒光點的最短距離,它決定著像素的大小和顯示圖像的清晰度。通點距有0.39,0.31,0.28,0.26,0.25及0.20等幾種規格。
顏色深度(Color Depth)
指每個像素可顯示的顏色數。每個像素可顯示的顏色數取決於顯示卡上給它所分配的DAC位數,位數越高,每個像素可顯示出的顏色數目就越多。但是在顯示解析度一定的情況下一塊顯示卡所能顯示的顏色數目還取決於其顯示存儲器的大小。比如一塊兩兆顯存的顯示卡,在1024X768的解析度下,就只能顯示16位色(即65536」種顏色),如果要顯示24位彩色(16.8M), 就必須要四兆顯存。
偽彩色(Pseudo Color)
如果每個像素使用的是1個位元組的DAC位數 (即8位),那麼每個像素就可以顯示出256種顏色,這種顏色模式稱為「偽彩色」又叫8位色。
高彩色(High Color)
如果給每個像素分配2個位元組的DAC位數(即16位),則每個像素可顯示的顏色最多可以達到65536種,這種顏色模式稱為「高彩色」 ,又叫「16位色」。
真彩色(True Color)
在顯示存儲器容量足夠的情況下,如果給每個像素分配3個位元組的DAC (即24位),那麼每個像素可顯示的顏色則可達到不可思議的1680萬種(168M色)——盡管人眼可分辨的顏色只是其中很少一部分而已,這種顏色模式就是「真彩色」,又叫「24位色」。目前較好的顯示卡已經達到了32位色的水平。
刷新頻率(Refresh Rate )
在顯示卡輸出的同步信號控制下,顯示器電於束先對屏幕從左到右進行水平掃描,然後又很快地從下到上進行垂亘掃描,這兩遍掃描完成後才組成一幅完整的畫面,這個掃描的速度就是刷新頻率,意思就是每秒鍾內屏幕畫向更新的次數,刷新頻率越高,顯示畫面的閃爍就越小。
帶寬(Bandwidth )
顯示存儲器同時輸入輸出數據的最大能力,常以每秒存取數據的最大位元組數MB/S)來表示越高的刷新頻率往往需要越大的帶寬。
紋理映射
每一個3D造型都是由眾多的三角形單元組成的,要使它顯示的更加真實的話,就要在它的表面粘貼上模擬的紋理和色彩,比如一塊大理石的紋理等。而這些紋理圖像是事先放在顯示存儲器中的,將之從存儲器中取出來並粘貼到3D造型的表面,這就是紋理映射。
Z緩沖(Z-BUFFERING)
Z的意思就是除X 、Y軸以外的第三軸,即3D立體圖型的深度。Z緩沖是指在顯示存儲器中預先存放不同的3D造型數據,這樣,當畫面中的視角發生變化時,可以即時地將這些變化反映出來從而避免了由於運算速度滯後所造成的圖形失真。
3D顯卡

3D顯卡術語簡介
如今3D顯示技術的發展日新月異,各種最新一代的顯示卡蘊含著最新的技術不斷的涌現,各個顯示晶元廠商也都在新產品的介紹中展示著產品的獨特性能與3D特效,其中許多諸如「三線過濾」、「阿爾法混合」、「材質壓縮」、「硬體T&L」等等名詞可能會令您疑惑不解,本文就是為您通俗的來解釋闡述這些專業術語,以使您能對枯燥的3D術語能有所把握。
這些最新的3D顯示技術與特性是在目前3D顯卡中正流行的或是將要廣泛流行的技術標准,展望未來,在21世紀中顯示技術也必將進入一個新的階段,面對著紛繁的顯示技術與顯卡市場,要知最後花落何家呢,還是讓我們拭目以待吧!
16-, 24-和32-位色
16位色能在顯示器中顯示出65,536種不同的顏色,24位色能顯示出1670萬種顏色,而對於32位色所不同的是,它只是技術上的一種概念,它真正的顯示色彩數也只是同24位色一樣,只有1670萬種顏色。對於處理器來說,處理32位色的圖形圖像要比處理24位色的負載更高,工作量更大,而且用戶也需要更大的內來存運行在32位色模式下。
2D卡
沒有3D加速引擎的普通顯示卡。
3D卡
有3D圖形晶元的顯示卡。它的硬體功能能夠完成三維圖像的處理工作,為CPU減輕了工作負擔。通常一款3D加速卡也包含2D加速功能,但是還有個別的顯示卡只具有3D圖像加速能力,比如Voodoo2。
Accelerated Graphics Port (AGP)高速圖形加速介面
AGP是一種PC匯流排體系,它的出現是為了彌補PCI的一些不足。AGP比PCI有更高的工作頻率,這就意味著它有更高的傳輸速度。AGP可以用系統的內存來當作材質緩存,而在PCI的3D顯卡中,材質只能被儲存在顯示卡的顯存中。
Alpha Blending(透明混合處理)
它是用來使物體產生透明感的技術,比如透過水、玻璃等物理看到的模糊透明的景象。以前的軟體透明處理是給所有透明物體賦予一樣的透明參數,這顯然很不真實;如今的硬體透明混合處理又給像素在紅綠藍以外又增加了一個數值來專門儲存物體的透明度。高級的3D晶元應該至少支持256級的透明度,所有的物體(無論是水還是金屬)都由透明度的數值,只有高低之分。
Anisotropic Filtering (各向異性過濾)
(請先參看二線性過濾和三線性過濾)各向異性過濾是最新型的過濾方法,它需要對映射點周圍方形8個或更多的像素進行取樣,獲得平均值後映射到像素點上。對於許多3D加速卡來說,採用8個以上像素取樣的各向異性過濾幾乎是不可能的,因為它比三線性過濾需要更多的像素填充率。但是對於3D游戲來說,各向異性過濾則是很重要的一個功能,因為它可以使畫面更加逼真,自然處理起來也比
三線性過濾會更慢。
Anti-aliasing(邊緣柔化或抗鋸齒)
由於3D圖像中的物體邊緣總會或多或少的呈現三角形的鋸齒,而抗鋸齒就是使畫面平滑自然,提高畫質以使之柔和的一種方法。如今最新的全屏抗鋸齒(Full Scene Anti-Aliasing)可以有效的消除多邊形結合處(特別是較小的多邊形間組合中)的錯位現象,降低了圖像的失真度,全景抗鋸齒在進行處理時, 須對圖像附近的像素進行2-4次采樣, 以達到不同級別的抗鋸齒效果。3dfx在驅動中會加入對2x2或4x4抗鋸齒效果的選擇, 根據串聯晶元的不同, 雙晶元Voodoo5將能提供2x2的抗鋸齒效果, 而四晶元的卡則能提供更高的4x4抗鋸齒級別。 簡而言之,就是將圖像邊緣及其兩側的像素顏色進行混合,然後用新生成的具有混合特性的點來替換原來位置上的點以達到柔化物體外形、消除鋸齒的效果。
API(Application Programming Interface)應用程序介面
API是存在於3D程序和3D顯示卡之間的介面,它使軟體運行與硬體之上。為了使用3D加速功能,就必須使用顯示卡支持的API來編寫程序,比如Glide, Direct3D或是OpenGL。
Bi-linear Filtering(二線性過濾)
是一個最基本的3D技術,現在幾乎所有的3D加速卡和游戲都支持這種過濾效果。當一個紋理由小變大時就會不可避免的出現「馬賽克」現象,而過濾能有效的解決這一問題,它是通過在原材質中對不同像素間利用差值演算法的柔化處理來平滑圖像的。其工作是以目標紋理的像素點為中心,對該點附近的4個像素顏色值求平均,然後再將這個平均顏色值貼至目標圖像素的位置上。通過使用雙線性過濾,雖然不同像素間的過渡更加圓滑,但經過雙線性處理後的圖像會顯得有些模糊。

② 一文了解遙感衛星影像處理及其發展趨勢

當空中的遙感衛星獲取了地球數字影像,並傳回地面,是否工作就結束了?答案顯然是否定的,相反, 這正是遙感數字圖像處理工作的開始

遙感數字圖像 (Digital image,後簡稱「遙感影像」)是數字形式的遙感圖像,地球表面不同區域和地物能夠反射或輻射不同波長的電磁波,利用這種特性,遙感系統可以產生不同的遙感數字圖像。

讓其與一般的數字圖像,也就是我們平時拍攝的電子照片拉開距離的,是遙感影像的 成像范圍與精細度 。遙感衛星的攝影區域是地球級的宏觀維度,影像中的每個像素都對應著三維真實世界中的某幾個、某個或某部分地物實體,根據衛星成像解析度的不同,其中一個像素就有可能是一棵樹、一輛車或是一幢大樓的某個窗戶。

所以,圖像每個像素點的亮度值(DN值,Digital Number)都有著重要的信息意義,要獲取其中的准確信息,用戶需要根據自身應用目標,對衛星影像中的像素進行管理、轉換、校正、增強、提取一系列的「神操作」,便於後續深入挖掘與業務融合應用。

DN值(Digital Number ):遙感影像像元亮度值,記錄地物的灰度值。無單位,是一個整數值,值大小與感測器的輻射解析度、地物發射率、大氣透過率和散射率等相關,反映地物的輻射率(Radiance)。

我們可以回到「P圖界」進行比喻,為了讓自己的社交媒體形象更加完美,我們打開某圖秀秀軟體,美白、瘦身、磨皮、祛痘....當然,遙感影像的數據處理復雜專業多了,到什麼地步呢?它可以被寫成 一本教科書 ——

今天,我們就來了解一下,這其中到底有哪些「神操作」,又如何應用?以及在遙感產業飛速發展的今天,高頻的數據產出、演算法和人工智慧的沖擊,會否讓這些「神操作」的傳統模式和底層邏輯,發生變革?

01、 什麼是遙感影像處理?

遙感影像處理,是利用 計算機圖像處理系統 遙感圖像中的像素 進行系列操作的過程。

遙感影像中包含著很多信息,通過數字化(成像系統的采樣和量化、數字存儲)後,才能有效地進行信息分析和內容提取。在此基礎上,對影像數據進行處理「再加工」,如校正圖形對齊坐標、增強地物輪廓,能夠極大地 提升圖像處理的精度和信息提取的效率, 這個過程都可以稱為「遙感數字圖像處理」。

作為「對地觀測」過程的一個基本而重要的組成部分,在衛星應用產業鏈中,遙感影像處理環節處於中下游、承前啟後的重要位置,前端承接衛星地面設施,後端面向農林、氣象、自然資源等行業具體的業務應用,提供「就緒」的數據服務或工具。

02、 為什麼遙感影像處理是應用的「必經之路」?

在我們看到整齊美觀的谷歌地球這類數字地球產品,或是遙感衛星應用在自然資源管理、環保、農業、氣象等領域的專題圖或解譯圖,都需要經過影像處理的中間「洗禮」。

因為遙感衛星在高空「作業」,其成像環境復雜程度遠遠超越我們日常地面的拍照環境,會遇到感測器不穩定,地球曲率、大氣條件、光照變化、地形變化等系統與非系統因素造成的圖形幾何變形、失真、模糊、噪點等。遙感數據中心對圖像進行去除條帶、幾何粗校正等初步處理,數據到達各終端用戶手中時,還需要對數據做進一步的精細處理,使其更加接近真實世界的實體空間環境與坐標,並根據其自身業務分析目標,進行專業處理,為接下來的遙感影像分析、解譯、業務應用做好准備。

總的來說,遙感影像處理的主要目標為以下三點:

圖像校正 :恢復、復原圖像。在進行信息提取前,必須對遙感圖像進行校正處理,以使影像能夠正確地反映實際地物信息或物理過程。

圖像增強 :壓抑或去除圖像雜訊。為使遙感圖像所包含的地物信息可讀性更強,感興趣目標更突出、容易理解和判讀,需要對整體圖像或特定地物信息進行增強處理。

信息提取 :根據地物光譜特徵和幾何特徵,確定不同地物信息的提取規則,在此基礎上,利用該規則從校正後的遙感數據中提取各種有用的地物信息。

03、 遙感數據處理有哪些功能?

完整的遙感數字圖像處理包含了硬體系統和軟體系統兩大部分,遙感數據存儲量龐大,需要大容量數字存儲設備與軟體共同配合存儲處理,這里主要介紹軟體處理部分。下面展示的是一個專業的圖像處理軟體界面,與常用的辦公軟體相比,圖像處理系統的各個功能顯得比較分散,各個菜單之間的聯系不緊密。

從某種意義上看,圖像處理系統更像一個圖像處理綜合 工具箱 ,由於圖像處理目標不同,用戶可以調用某個功能、某幾項功能的組合,並非所有流程都選用。這里將一些典型的處理功能進行歸納,並對基礎步驟進行介紹。

數字存儲與管理

遙感影像本身內存較大,1景7波段的landsat遙感影像至少有200MB,而高光譜影像可能達到1GB;而進入時間與空間雙重高分時代以來,數據高頻產出與累積,也促使遙感進入大數據時代,讓遙感雲服務、存儲管理、快速分發共享趨勢愈加明顯。基於私有雲、混合雲的遙感影像數字存儲、在線更新、管理檢索、發布瀏覽,已經逐步成為與遙感數據處理不可分割的重要基礎,並將大幅度提升後續遙感影像專業處理與業務應用效率。

影像預處理

輻射校正(Radiometric Correction)

指對由於外界因素,數據獲取和傳輸系統產生的系統的、隨機的輻射失真或畸變進行的校正,消除或改正因輻射誤差而引起影像畸變的過程。

簡單概括,就是 去除感測器或大氣「雜訊」 ,更准確地表示地面條件, 提高圖像的「保真度」 ,主要是恢復數據缺失、去除薄霧,或為鑲嵌和變化監測做好准備。

輻射校正在動態監測中的作用 :在多時相遙感圖像中,除了地物的變化會引起圖像中輻射值的變化外,不變的地物在不同時相圖像中的輻射值也會有差異。如果需要利用多時相遙感圖像的光譜信息對地物變化狀況進行動態監測,首要消除不變地物的輻射值差異。

通過相對輻射校正,將一圖像作為參考(或基準)圖像,調整另一圖像的DN值,使得兩時相圖像上同名的地物具有相同的DN值,這個過程也叫 多時相遙感圖像的光譜歸一化 。這樣就可以通過分析不同時相遙感圖像上的輻射值差異來實現變化監測,從而完成 地物動態變化的遙感動態監測

幾何校正(Geometric correction)

遙感成像過程中,因攝影材料變形、物鏡畸變、大氣折光、地球曲率、地球自轉、地形起伏等因素導致的綜合影響,原始圖像上地物的幾何位置、形狀、大小、尺寸、方位等特徵與其對應的地面地物的特徵往往是不一致的,這種不一致為幾何變形,也稱幾何畸變。幾何校正就是通過一系列的數學模型來改正和消除這種幾何畸變,使其定位準確。

幾何校正原理示意:真實世界的地形是立體而凹凸不平的,但遙感衛星感測器只能獲取平面二維像素,這就帶來了地形扭曲 | 圖源:網路;重製圖:超擎時空


圖像增強

圖像對比度增強 (Image Contrast Enhancement)

統計每幅圖像的各亮度的像元數而得到的隨機分布圖,即為該幅圖像的直方圖。 一般來說,包含大量像元的圖像,像元的亮度隨機分布應是正態分布。直方圖為非正態分布,說明圖像的亮度分布偏亮、偏暗或亮度過於集中,圖像的對比度小,需要調整該直方圖到正態分布,以改善圖像的質量,並便於分辨地物輪廓並提取信息。

彩色合成

為了充分利用色彩在遙感圖像判讀和信息提取中的優勢,常利用彩色合成的方法對多光譜圖像進行處理,以得到彩色圖像。如上圖,彩色圖像可以分為真彩色圖像和假彩色圖像。

密度分割

將灰度圖像按照像元的灰度值進行分級,再分級賦以不同的顏色,使原有灰度圖像變成偽彩色圖像,達到圖像增強的目的。

圖像運算

兩幅或多幅單波段圖像,空間配准後可進行算術運算,實現圖像的增強。根據地物在不同波段的灰度差異,通過不同波段的代數運算產生新的「波段」,常見的有加法運算、減法運算、比值運算和綜合運算,如:

減法運算:可突現出兩波段差值大的地物,如紅外-紅,可突現植被信息。
比值運算:常用於計算植被指數、消除地形陰影等。
植被指數:NDVI=(IR-R)/(IR+R)

圖像融合

遙感圖像信息融合是有效提升圖像解析度與信息量的手段,將多源遙感數據在統一的地理坐標系中,採用一定的演算法生成一組新的信息或合成圖像的過程。

不同的遙感數據具有不同的空間解析度、波譜解析度和時相解析度,將低解析度的多光譜影像與高解析度的單波段影像重采樣生成一副高解析度多光譜影像遙感的圖像處理技術,使得處理後的影像既有較高的空間解析度,又具有多光譜特徵。

圖像裁剪

在遙感實際應用中,用戶可能只對遙感影像中的一個特定的范圍內的信息感興趣,這就需要將遙感影像裁減成研究范圍的大小。常用的裁剪方式有,按ROI(興趣區域)裁剪、按文件裁剪(按照指定影像文件的范圍大小)、按地圖裁剪(根據地圖的地理坐標或經緯度的范圍)。

圖像鑲嵌

也叫圖像拼接,是將兩幅或多幅數字影像(它們有可能是在不同的攝影條件下獲取的)拼在一起,構成一幅整體圖像的技術過程。 通常是先對每幅圖像進行幾何校正,將它們規劃到統一的坐標系中,然後對它們進行裁剪,去掉重疊的部分,再將裁剪後的多幅影像裝配起來形成一幅大幅面的影像。

鑲嵌勻色

將若干幅互為鄰接的遙感影像通過拼接勻色技術合並成一幅統一的新影像。

信息提取

遙感圖像中目標地物的特徵是地物電磁波的輻射差異在遙感影像上的反映。依據遙感圖像上的地物特徵,識別地物類型、性質、空間位置、形狀、大小等屬性的過程即為遙感信息提取。

目視判讀

也叫人工解譯,即用人工肉眼與經驗判讀遙感影像,對遙感影像上目標地物的范圍進行手工勾繪,達到信息提取的目的。人工解譯為傳統常用的信息提取辦法,但在海量影像下判讀分析效率相對低。

圖像分類

是依據是地物的光譜特徵,確定判別函數和相應的判別准則,將圖像所有的像元按性質分為若干類別的過程,主要方式分為監督分類與非監督分類。

- 監督分類

監督分類是在分類前人們已對遙感影像樣本區中的類別屬性有了先驗知識,進而可利用這些樣本類別的特徵作為依據建立和訓練分類器(亦即建立判別函數),進而完成整幅影像的類型劃分,將每個像元歸並到相對應的一個類別中去。

監督分類也是目前遙感AI最為常見的應用方式,即通過樣本庫,用機器學習對特定地物進行分類、標注或識別。

- 非監督分類

非監督分類也稱聚類分析,是指人們事先對分類過程不施加任何的先驗知識,而僅憑數據(遙感影像地物的光譜特徵的分布規律)、即自然聚類的特性進行「盲目」的分類;是以集群為理論基礎,通過計算機對圖像進行集聚統計分析的方法,是模式識別的一種方法。一般演算法有:回歸分析、趨勢分析、等混合距離法、集群分析、主成分分析和圖形識別等。

監督分類和非監督分類的區別 :有監督必須有訓練集與測試樣本。在訓練集中找規律,而對測試樣本使用這種規律;非監督沒有訓練集,只有一組數據,在該組數據集內尋找規律。

04、 遙感數據處理正在發生怎樣的改變?

遙感數據處理更像是生產製造中的「原材料粗加工」環節,也是遙感影像數據智能應用和業務融合的前序手段,從前文的介紹來看,其過程也是較為復雜和專業的。

作為對地觀測和遙感產業化的重要組成部分,位於產業中下游的遙感數據處理,也受到了大數據時代的沖擊,正在響應這一趨勢並發生變革,走向 實時化、標准化、規模化、自動化

在企業數字化轉型中,人們常說的一句話是,所有傳統產業都值得用數字化再做一遍,在傳統的數據生產、信息服務產業也是如此,其模式和流程都值得用演算法和AI再做一遍。

當演算法與人工智慧逐步滲透遙感數據處理這個環節,能夠解決遙感產業數據生產服務中的很多難題,例如數據分發周期與鏈路長,處理環節多,海量數據處理的精準、一致性等問題,這我們可以將其視為「自動化批量處理」。

當中游演算法引擎解決了數據服務和數據計算效率和自動化流程的問題後,下游也將出現更多適用於各種垂直細分場景的精細化應用數據產品,而在以上介紹的遙感影像信息提取環節,有了AI和演算法的參與,也出現很多高效的自動化功能,如目標識別、地物提取、地物分類、變化檢測等,逐步幫助人類提高解譯的效率,形成遙感產業下游的「智能化信息挖掘」機制。

我們可以看到,從遙感數據獲取源頭,到數據處理,到終端應用,其效率與底層數據模式密不可分,在衛星互聯網和對地觀測 星座 逐步構建成型的趨勢下,只有將數據的獲取、處理和共享流程標准化,大規模、自動化、流水化的遙感產業才能更好地地為政企數字化轉型發揮動能,也真正地迎來時空大數據時代。

參考資料

《遙感數字影像處理教程》韋玉春 湯國安 楊昕 編著

③ 攝像頭深度測試指的是

對於攝像頭的最大性能的測試。
首先通過kinectsdk-v2.0-1409-setp.exe這個軟體進行調試攝像頭,然後安裝opencv用來報村16位深度圖像,利用官方所給的源碼進行深度演算法測試,在VC++中添加依賴庫,並且將demo官網中提取出來的項目代表,獲取opencv中的16bit的png圖像。最後通過C語言將深度圖轉換成偽彩色圖。

④ matlab 里小波變換的問題

http://hi..com/kekewutao/blog/item/0bafc700d2849011728b65fd.html

使用MATLAB設計小波變換程序中的若干問題3[轉貼]
使用MATLAB設計小波變換程序中的若干問題仍需探討的問題:為什麼使用PNG存儲經小波變換後的重構圖像變大? 我曾在清華大學的多媒體課程的教師答疑中寫了「老師:尊重事實:DB9閾值10的PNG文件就是比原文件大」和「續一:尊重事實:DB9閾值10的PNG文件就是比原文件大」,在林老師的鼓勵和指導下,我進行了繼續試驗、分析,與劉趙璧(Anna)同學進行了探討,並得到了Lily(姓名還不知道)同學的幫助,同時同學們也做了各自不同的實驗,現在的實驗結果可以說基本上比較明確,那就是有些圖像就是會變大,這與圖像的種類、紋理等密切相關。林老師曾經鼓勵我去研究一下PNG的壓縮方法,無奈我資質不夠,至今在這方面的進展不大。由於臨近期末考試,作業也要抓緊,所以我暫且將沒有搞明白的內容擱置,待寒假期間再進行,希望對這些問題有各種看法也有興趣研究的同學對此發表意見。以下是我最近試驗、分析和閱讀到的一些相關信息。試驗結果 我首先根據老師第三章的Haar矩陣演算法推演出DB9的系數矩陣,並實現了分解重構及閾值處理程序,對幾種照片進行了比較,然後使用3.1節的simplecmp進行了相同照片的實驗,結果相當一致。細小差別是因為我的程序對邊界的擴展與MATLAB不一樣,在設置閾值後引起了邊界上小部分不一致造成的。表一:真彩色圖像百合花的處理結果閾值 Png
Haar(Mat/Mine) 0數
Haat
(Mat/Mine) PNG
Db9
(MAT / Mine) 0數
Db9
(MAT / Mine)
95973 / 95973
0 95973 / 95973 27524 / 24268 95973 / 95973 27 / 9
5 74552 / 74292 135838 / 136063 101882 / 101992 167412 /165662
10 51976 / 51504 163423 / 163741 98411 / 98861 199200 / 195730
20 32474 / 32346 180167 / 180267 92295 / 93660 220629 / 217214
從對比表中我們能夠看到2個程序的結果相當一致,因此,我不再給出兩種程序的對比,而是使用simplecmp直接處理的結果說明。 將百合花圖像使用[I,map]=rgb2ind(x,255);轉換成為彩色圖像處理,在將偽彩色圖像轉換為連續變換的灰度圖像(如2.4常見問題中討論的方法)進行處理:表二:百合花的偽彩色圖像和處理後的灰度(gray)圖像的處理結果閾值 Png
Haar(Index/Gray) 0數
Haar(Index/Gray) PN
Db9(Index/Gray) 0數
Db9
(Index/Gray)
48535 / 43235
0 48535 / 43235 6096/ 7430 48535/ 43235 18 / 22
5 53207 / 36450 9473/ 43626 60362 / 49927 7009 / 52852
10 58025 / 23602 13362/ 54344 64916 / 47813 13202 / 65881
20 60193/ 14347 21948 / 60039 66020/ 46014 24468 / 73494
其他偽彩色與進行加工的灰度圖的結果與此完全一致,這也就說明了如果偽彩色文件的色板不是單調性遞增就不適合小波分解。「The color bar to the right of the image is not smooth and does not monotonically progress from dark to light. This type of indexed image is not suitable for direct wavelet decomposition with the toolbox and needs to be preprocessed.」。我對 Facets進行同樣的實驗,結果與此一致。這種處理的結果可以從圖像象素值的連續性來理解。這是處理與不處理的圖像的中間一行的數據圖。另外,不連續的圖像質量在壓縮後會被極大地破壞圖2偽彩色文件變化前後的第128行數據的連續性情況對比分析 多種試驗圖片基本能夠反映類似的結果,雖然Indexed Color image有時令Haar小波的分解重構圖像出現增大現象,單經過處理之後,這種現象就會消失。然而對於DB9可以看到無論真彩色還是處理後的灰度圖像都在閾值5 10處超過原始圖像的大小,能不能因此得出DB9不適合進行圖像壓縮的結論呢?有一些同學確實這樣認為,但我認為這種觀點因為忽略了如何利用小波進行壓縮和還原的過程,這也正是第四章老師為我們講述的那些編碼演算法而造成的。在推薦材料[1]中也有類似的說明。圖3、JPEG2000的基本結構看一下上圖就可以明白為什麼PNG不能衡量小波壓縮的效率問題。上圖的圖像原始數據首先經過正變換(Forward Transform)就是小波變換的得到小波系數,變換的小波系數經過閾值處理後進行量化,編碼後得到壓縮的圖像文件JPEG2000,如果你沒有JPEG2000的顯示程序,那麼你就不能看到它。它的顯示程序就是由解碼器從壓縮數據中解出編碼,進行反量化,得到小波系數,再實施逆變換(Inverse Transform)就是小波系數重構。最終得到圖像的原始數據。因此衡量小波變換的效率是應該看你選擇的小波能不能分解出適合「編碼器」壓縮的小波系數,這種編碼器不是PNG的LZ77,因為LZ77壓縮小波分解系數的效率不是最好的。這種高效編碼器在第四章可以找到。那麼我們存儲 PNG文件的目的是什麼呢?我認為壓縮與去噪(de-noising)是同一種方法的兩種提法。他們都使用了設置閾值的方法。我們可以仔細分析經過重構的PNG圖片的質量來體會這種消除噪音的效果,也可以評定小波壓縮後的圖片的視覺質量,同時PNG的文件大小也可以讓我們從LZ77演算法的本質來理解小波變換壓縮後的重構圖像的內容變化情況。比如,我們可以從表2中的灰度圖像在haar變換取閾值20時出現塊狀象素,文件大小變為14347,而db9卻為46014,超過原始的PNG大小,但並不出現塊狀而是具有波狀的特徵。這本身說明了採用Harr小波壓縮或去噪後重構的圖像中相同的『串』增多,便於PNG方式壓縮,而db9則在相同閾值的情況下不會象Haar那樣製造『馬賽克』,說明了它的平滑性,這也能幫助我們理解小波的特性。當然,當閾值繼續增加後,超過某一界限,即使DB9也仍然會使PNG文件大小減小。這本身也就是由雙尺度(Dyadic)小波變換的兩種濾波器決定的。低通濾波結果相當於平均值,高通濾波結果相當於差值,差值能夠保證重構圖像的細節部分丟失最小,如果差值部分被閾值略去的過多,細節就會越來越少,平均意義的值約來越多,直到多到某一個臨界值時(該圖像的閾值取到40),重構的圖像也可能出現較多的相同數字串,這就會提高PNG的壓縮結果。下圖是我對Haar(藍色)小波取閾值為20,db9(紅色)小波閾值取40時第128行1:32列的數據曲線與原始數據(黑色)曲線的對比。可以看出也db9在閾值=40時出現了較多的平均值,但比haar在閾值=20時的曲線要少的多。圖4、haar(藍色)和db9(紅色)壓縮後重構圖像的第128行,1:32列的數據曲線不過,MATLAB給我們提供了量化的方法來決定如何選取閾值。在HELP Wavelet Toolbox : Advance Concepts: Choosing the Optimal Decomposition中提到了幾種利用「熵」的概念來衡量如何選取合適的分解級。感興趣的同學還可以參看wentropy, wdcbm2, wpdec的幫助。文獻[1]中也提到了衡量壓縮質量的客觀化方法MSE,PNSR並指出小波的重構濾波器的長度越長,形狀越規則越能夠提供良好的壓縮性能。 上面對PNG的討論因為沒有足夠的演算法分析和程序解讀,同時也沒有準確的試驗數據,因此只能作為猜測。但衡量小波壓縮效率的方法我堅持認為不能以PNG文件大小來解說,如果採用圖像文件大小來衡量,應該以JPEG2000來衡量。

⑤ 分析比較下列圖像增強方法:直方圖均衡化、平滑、銳化、偽彩色增強等,各種的優缺點,總結其適用場合

直方圖均衡化:直方圖均衡化是將原圖象的直方圖通過變換函數修正為均勻的直方圖,然後按均衡直方

圖修正原圖象。圖象均衡化處理後,圖象的直方圖是平直的,即各灰度級具有相同的出現頻數,那麼由

於灰度級具有均勻的概率分布,圖象看起來就更清晰了。

圖象在傳輸過程中,由於傳輸信道、采樣系統質量較差,或受各種干擾的影響,而造成圖象毛
糙,此時,就需對圖象進行平滑處理。目的:去除或衰減圖象中雜訊和假輪廓;• 方法分類:空域和頻域方法。

圖象銳化(Image Sharpening)
1. 圖象變模糊原因:(1)成像系統聚焦不好或信道過窄;(2)平均或積分運算;使目標物輪廓變模糊,細節輪廓不清晰。
2. 目的:加重目標物輪廓,使模糊圖象變清晰。
3. 方法分類:
(1)空域微(差)分法—模糊圖象實質是受到平均或積分運算,故對其進行逆運算(微分),使圖象清
晰;
(2) 頻域高通濾波法—從頻域角度考慮,圖象模糊的實質是高頻分量被衰減,故可用高頻濾波加重濾波
使圖象清晰。在圖像的識別中常需要突出邊緣和輪廓信息。圖像銳化就是增強圖像的邊緣或輪廓。圖像平滑通過積分過程使得圖像邊緣模糊,圖像銳化則通過微分而使圖像邊緣突出、清晰。

人眼的視覺特性:
• 分辨的灰度級介於十幾到二十幾級之間;
• 彩色分辨能力可達到灰度分辨能力的百倍以上。
彩色增強技術是利用人眼的視覺特性,將灰度圖像變成彩色圖像或改變彩色圖像已有彩色的分布,改善圖像的可分辨性。彩色增強方法可分為偽彩色處理和真彩色處理。
偽彩色的含義:把不敏感的灰度信號轉換成敏感的彩色信號,稱為偽彩色增強。偽彩色指定某灰度為某種彩色。
自然物體的彩色稱為真彩色。
偽彩色增強是把黑白圖像的各個不同灰度級按照線性或非線性的映射函數變換成不同的彩色,得到一幅彩色圖像的技術。使原圖像細節更易辨認,目標更容易識別。偽彩色增強的方法主要有密度分割法、灰度級一彩色變換、頻率域偽彩色增強三種。

我當初也沒有學好,只是列出它們的作用 ,至於適用場合看用途應該就可以判斷了。都是我一個一個找的啊。

⑥ (急)數字圖像處理主要包含哪八個方面的內容

主要內容有:圖像增強、圖像編碼、圖像復原、圖像分割、圖像分類、圖像重建、圖像信息的輸出和顯示。

圖像增強用於改善圖像視覺質量;圖像復原是盡可能地恢復圖像本來面目;圖像編碼是在保證圖像質量的前提下壓縮數據,使圖像便於存儲和傳輸;圖像分割就是把圖像按其灰度或集合特性分割成區域的過程。

圖像分類是在將圖像經過某些預處理(壓縮、增強和復原)後,再將圖像中有用物體的特徵進行分割,特徵提取,進而進行分類;圖像重建是指從數據到圖像的。處理,即輸入的是某種數據,而經過處理後得到的結果是圖像。

(6)偽彩色演算法擴展閱讀

發展概況

數字圖像處理最早出現於20世紀50年代,當時的電子計算機已經發展到一定水平,人們開始利用計算機來處理圖形和圖像信息。數字圖像處理作為一門學科大約形成於20世紀60年代初期。

早期的圖像處理的目的是改善圖像的質量,它以人為對象,以改善人的視覺效果為目的。圖像處理中,輸入的是質量低的圖像,輸出的是改善質量後的圖像,常用的圖像處理方法有圖像增強、復原、編碼、壓縮等。首次獲得實際成功應用的是美國噴氣推進實驗室(JPL)。

他們對航天探測器徘徊者7號在1964年發回的幾千張月球照片使用了圖像處理技術,如幾何校正、灰度變換、去除雜訊等方法進行處理,並考慮了太陽位置和月球環境的影響,由計算機成功地繪制出月球表面地圖,獲得了巨大的成功。

隨後又對探測飛船發回的近十萬張照片進行更為復雜的圖像處理,以致獲得了月球的地形圖、彩色圖及全景鑲嵌圖,獲得了非凡的成果,為人類登月創舉奠定了堅實的基礎,也推動了數字圖像處理這門學科的誕生。

在以後的宇航空間技術,如對火星、土星等星球的探測研究中,數字圖像處理技術都發揮了巨大的作用。數字圖像處理取得的另一個巨大成就是在醫學上獲得的成果。

⑦ 有關matlab的問題

你在說什麼

⑧ 在圖像處理中有哪些演算法

太多了,去找本書看看吧!給個大概的介紹好了
圖像處理主要分為兩大部分:
1、圖像增強
空域方法有 直方圖均衡化
灰度線性變化
線性灰度變化
分段線性灰度變化
非線性灰度變化(對數擴展
指數擴展)

圖像平滑
領域平均法(加權平均法
非加權領域平均法)
中值濾波
圖像銳化
Roberts運算元
Sobel運算元
拉普拉斯運算元

頻域方法有
低通濾波
理想低通濾波
巴特沃斯低通濾波
指數低通濾波
梯形低通濾波
高通濾波
理想高通濾波
巴特沃斯高通濾波
指數高通濾波
梯形高通濾波
彩色圖像增強(真彩色、假彩色、偽彩色增強)
2、圖像模糊處理
圖像模糊處理
運動模糊(維納濾波
最小均方濾波
盲卷積
……


高斯模糊(維納濾波
最小均方濾波
盲卷積
……

圖像去噪處理
高斯雜訊
(維納濾波
樣條插值
低通濾波
……

椒鹽雜訊
(中值濾波
……

⑨ 怎樣使用OpenCV進行人臉識別

友情提示,要看懂代碼前,你得先知道OpenCV的安裝和配置,會用C++,用過一些OpenCV函數。基本的圖像處理和矩陣知識也是需要的。[gm:我是簫鳴的注釋]由於我僅僅是翻譯,對於六級才過的我,肯定有一些翻譯錯的或者不當的地方,所以請大家糾錯。

1.1.介紹Introction

從OpenCV2.4開始,加入了新的類FaceRecognizer,我們可以使用它便捷地進行人臉識別實驗。本文既介紹代碼使用,又介紹演算法原理。(他寫的源代碼,我們可以在OpenCV的opencv\moles\contrib\doc\facerec\src下找到,當然也可以在他的github中找到,如果你想研究源碼,自然可以去看看,不復雜)目前支持的演算法有

Eigenfaces特徵臉createEigenFaceRecognizer()

Fisherfaces createFisherFaceRecognizer()

LocalBinary Patterns Histograms局部二值直方圖 createLBPHFaceRecognizer()

下面所有的例子中的代碼在OpenCV安裝目錄下的samples/cpp下面都能找到,所有的代碼商用或者學習都是免費的。1.2.人臉識別Face Recognition

對人類來說,人臉識別很容易。文獻[Tu06]告訴我們,僅僅是才三天的嬰兒已經可以區分周圍熟悉的人臉了。那麼對於計算機來說,到底有多難?其實,迄今為止,我們對於人類自己為何可以區分不同的人所知甚少。是人臉內部特徵(眼睛、鼻子、嘴巴)還是外部特徵(頭型、發際線)對於人類識別更有效?我們怎麼分析一張圖像,大腦是如何對它編碼的?David Hubel和TorstenWiesel向我們展示,我們的大腦針對不同的場景,如線、邊、角或者運動這些局部特徵有專門的神經細胞作出反應。顯然我們沒有把世界看成零散的塊塊,我們的視覺皮層必須以某種方式把不同的信息來源轉化成有用的模式。自動人臉識別就是如何從一幅圖像中提取有意義的特徵,把它們放入一種有用的表示方式,然後對他們進行一些分類。基於幾何特徵的人臉的人臉識別可能是最直觀的方法來識別人臉。第一個自動人臉識別系統在[Kanade73]中又描述:標記點(眼睛、耳朵、鼻子等的位置)用來構造一個特徵向量(點與點之間的距離、角度等)。通過計算測試和訓練圖像的特徵向量的歐氏距離來進行識別。這樣的方法對於光照變化很穩健,但也有巨大的缺點:標記點的確定是很復雜的,即使是使用最先進的演算法。一些幾何特徵人臉識別近期工作在文獻[Bru92]中有描述。一個22維的特徵向量被用在一個大資料庫上,單靠幾何特徵不能提供足夠的信息用於人臉識別。特徵臉方法在文獻[TP91]中有描述,他描述了一個全面的方法來識別人臉:面部圖像是一個點,這個點是從高維圖像空間找到它在低維空間的表示,這樣分類變得很簡單。低維子空間低維是使用主元分析(Principal Component Analysis,PCA)找到的,它可以找擁有最大方差的那個軸。雖然這樣的轉換是從最佳重建角度考慮的,但是他沒有把標簽問題考慮進去。[gm:讀懂這段需要一些機器學習知識]。想像一個情況,如果變化是基於外部來源,比如光照。軸的最大方差不一定包含任何有鑒別性的信息,因此此時的分類是不可能的。因此,一個使用線性鑒別(Linear Discriminant Analysis,LDA)的特定類投影方法被提出來解決人臉識別問題[BHK97]。其中一個基本的想法就是,使類內方差最小的同時,使類外方差最大。

近年來,各種局部特徵提取方法出現。為了避免輸入的圖像的高維數據,僅僅使用的局部特徵描述圖像的方法被提出,提取的特徵(很有希望的)對於局部遮擋、光照變化、小樣本等情況更強健。有關局部特徵提取的方法有蓋伯小波(Gabor Waelets)([Wiskott97]),離散傅立葉變換(DiscreteCosinus Transform,DCT)([Messer06]),局部二值模式(LocalBinary Patterns,LBP)([AHP04])。使用什麼方法來提取時域空間的局部特徵依舊是一個開放性的研究問題,因為空間信息是潛在有用的信息。

1.3.人臉庫Face Database

我們先獲取一些數據來進行實驗吧。我不想在這里做一個幼稚的例子。我們在研究人臉識別,所以我們需要一個真的人臉圖像!你可以自己創建自己的數據集,也可以從這里(http://face-rec.org/databases/)下載一個。

AT&TFacedatabase又稱ORL人臉資料庫,40個人,每人10張照片。照片在不同時間、不同光照、不同表情(睜眼閉眼、笑或者不笑)、不同人臉細節(戴眼鏡或者不戴眼鏡)下採集。所有的圖像都在一個黑暗均勻的背景下採集的,正面豎直人臉(有些有有輕微旋轉)。YaleFacedatabase A ORL資料庫對於初始化測試比較適合,但它是一個簡單的資料庫,特徵臉已經可以達到97%的識別率,所以你使用其他方法很難得到更好的提升。Yale人臉資料庫是一個對於初始實驗更好的資料庫,因為識別問題更復雜。這個資料庫包括15個人(14個男人,1個女人),每一個都有11個灰度圖像,大小是320*243像素。資料庫中有光照變化(中心光照、左側光照、右側光照)、表情變化(開心、正常、悲傷、瞌睡、驚訝、眨眼)、眼鏡(戴眼鏡或者沒戴)。

壞消息是它不可以公開下載,可能因為原來的伺服器壞了。但我們可以找到一些鏡像(比如 theMIT)但我不能保證它的完整性。如果你需要自己剪裁和校準圖像,可以閱讀我的筆記(bytefish.de/blog/fisherfaces)。ExtendedYale Facedatabase B 此資料庫包含38個人的2414張圖片,並且是剪裁好的。這個資料庫重點是測試特徵提取是否對光照變化強健,因為圖像的表情、遮擋等都沒變化。我認為這個資料庫太大,不適合這篇文章的實驗,我建議使用ORL資料庫。

1.3.1. 准備數據
我們從網上下了數據,下了我們需要在程序中讀取它,我決定使用CSV文件讀取它。一個CSV文件包含文件名,緊跟一個標簽。

/path/to/image.ext;0

假設/path/to/image.ext是圖像,就像你在windows下的c:/faces/person0/image0.jpg。最後我們給它一個標簽0。這個標簽類似代表這個人的名字,所以同一個人的照片的標簽都一樣。我們對下載的ORL資料庫進行標識,可以獲取到如下結果:

./at/s1/1.pgm;0
./at/s1/2.pgm;0
...
./at/s2/1.pgm;1
./at/s2/2.pgm;1
...
./at/s40/1.pgm;39
./at/s40/2.pgm;39
想像我已經把圖像解壓縮在D:/data/at下面,而CSV文件在D:/data/at.txt。下面你根據自己的情況修改替換即可。一旦你成功建立CSV文件,就可以像這樣運行示常式序:

facerec_demo.exe D:/data/at.txt
1.3.2 Creating the CSV File

你不需要手工來創建一個CSV文件,我已經寫了一個Python程序來做這事。

[gm:說一個我實現的方法

如果你會cmd命令,或者稱DOS命令,那麼你打開命令控制台。假設我們的圖片放在J:下的Faces文件夾下,可以輸入如下語句:

J:\Faces\ORL>dir /b/s *.bmp > at.txt
然後你打開at.txt文件可能看到如下內容(後面的0,1..標簽是自己加的):

。。。。
J:\Faces\ORL\s1\1.bmp;0
J:\Faces\ORL\s1\10.bmp;0
J:\Faces\ORL\s1\2.bmp;0
J:\Faces\ORL\s1\3.bmp;0
J:\Faces\ORL\s1\4.bmp;0
J:\Faces\ORL\s1\5.bmp;0
J:\Faces\ORL\s1\6.bmp;0
J:\Faces\ORL\s1\7.bmp;0
J:\Faces\ORL\s1\8.bmp;0
J:\Faces\ORL\s1\9.bmp;0
J:\Faces\ORL\s10\1.bmp;1
J:\Faces\ORL\s10\10.bmp;1
J:\Faces\ORL\s10\2.bmp;1
J:\Faces\ORL\s10\3.bmp;1
J:\Faces\ORL\s10\4.bmp;1
J:\Faces\ORL\s10\5.bmp;1
J:\Faces\ORL\s10\6.bmp;1
。。。。
自然還有c++編程等方法可以做得更好,看這篇文章反響,如果很多人需要,我就把這部分的代碼寫出來。(遍歷多個文件夾,標上標簽)

]

特徵臉Eigenfaces

我們講過,圖像表示的問題是他的高維問題。二維灰度圖像p*q大小,是一個m=qp維的向量空間,所以一個100*100像素大小的圖像就是10,000維的圖像空間。問題是,是不是所有的維數空間對我們來說都有用?我們可以做一個決定,如果數據有任何差異,我們可以通過尋找主元來知道主要信息。主成分分析(Principal Component Analysis,PCA)是KarlPearson (1901)獨立發表的,而 Harold Hotelling (1933)把一些可能相關的變數轉換成一個更小的不相關的子集。想法是,一個高維數據集經常被相關變數表示,因此只有一些的維上數據才是有意義的,包含最多的信息。PCA方法尋找數據中擁有最大方差的方向,被稱為主成分。

演算法描述Algorithmic Description
令 2 表示一個隨機特徵,其中 3 .

計算均值向量 4
5


計算協方差矩陣 S
6


計算 的特徵值7 和對應的特徵向量 8 9


對特徵值進行遞減排序,特徵向量和它順序一致. K個主成分也就是k個最大的特徵值對應的特徵向量。
x的K個主成份:

10其中11 .

PCA基的重構:

12其中 13 .

然後特徵臉通過下面的方式進行人臉識別:

A. 把所有的訓練數據投影到PCA子空間

B. 把待識別圖像投影到PCA子空間

C. 找到訓練數據投影後的向量和待識別圖像投影後的向量最近的那個。

還有一個問題有待解決。比如我們有400張圖片,每張100*100像素大小,那麼PCA需要解決協方差矩陣 14的求解,而X的大小是10000*400,那麼我們會得到10000*10000大小的矩陣,這需要大概0.8GB的內存。解決這個問題不容易,所以我們需要另一個計策。就是轉置一下再求,特徵向量不變化。文獻 [Duda01]中有描述。

[gm:這個PCA還是自己搜著看吧,這里的講的不清楚,不適合初學者看]OpenCV中使用特徵臉Eigenfaces in OpenCV
給出示常式序源代碼

#include "opencv2/core/core.hpp"
#include "opencv2/contrib/contrib.hpp"
#include "opencv2/highgui/highgui.hpp"

#include <iostream>
#include <fstream>
#include <sstream>

usingnamespace cv;
usingnamespace std;

static Mat norm_0_255(InputArray _src) {
Mat src = _src.getMat();
// 創建和返回一個歸一化後的圖像矩陣:
Mat dst;
switch(src.channels()) {
case1:
cv::normalize(_src, dst, 0,255, NORM_MINMAX, CV_8UC1);
break;
case3:
cv::normalize(_src, dst, 0,255, NORM_MINMAX, CV_8UC3);
break;
default:
src.To(dst);
break;
}
return dst;
}
//使用CSV文件去讀圖像和標簽,主要使用stringstream和getline方法
staticvoid read_csv(const string& filename, vector<Mat>& images, vector<int>& labels, char separator =';') {
std::ifstream file(filename.c_str(), ifstream::in);
if (!file) {
string error_message ="No valid input file was given, please check the given filename.";
CV_Error(CV_StsBadArg, error_message);
}
string line, path, classlabel;
while (getline(file, line)) {
stringstream liness(line);
getline(liness, path, separator);
getline(liness, classlabel);
if(!path.empty()&&!classlabel.empty()) {
images.push_back(imread(path, 0));
labels.push_back(atoi(classlabel.c_str()));
}
}
}

int main(int argc, constchar*argv[]) {
// 檢測合法的命令,顯示用法
// 如果沒有參數輸入則退出!.
if (argc <2) {
cout <<"usage: "<< argv[0]<<" <csv.ext> <output_folder> "<< endl;
exit(1);
}
string output_folder;
if (argc ==3) {
output_folder = string(argv[2]);
}
//讀取你的CSV文件路徑.
string fn_csv = string(argv[1]);
// 2個容器來存放圖像數據和對應的標簽
vector<Mat> images;
vector<int> labels;
// 讀取數據. 如果文件不合法就會出錯
// 輸入的文件名已經有了.
try {
read_csv(fn_csv, images, labels);
} catch (cv::Exception& e) {
cerr <<"Error opening file \""<< fn_csv <<"\". Reason: "<< e.msg << endl;
// 文件有問題,我們啥也做不了了,退出了
exit(1);
}
// 如果沒有讀取到足夠圖片,我們也得退出.
if(images.size()<=1) {
string error_message ="This demo needs at least 2 images to work. Please add more images to your data set!";
CV_Error(CV_StsError, error_message);
}
// 得到第一張照片的高度. 在下面對圖像
// 變形到他們原始大小時需要
int height = images[0].rows;
// 下面的幾行代碼僅僅是從你的數據集中移除最後一張圖片
//[gm:自然這里需要根據自己的需要修改,他這里簡化了很多問題]
Mat testSample = images[images.size() -1];
int testLabel = labels[labels.size() -1];
images.pop_back();
labels.pop_back();
// 下面幾行創建了一個特徵臉模型用於人臉識別,
// 通過CSV文件讀取的圖像和標簽訓練它。
// T這里是一個完整的PCA變換
//如果你只想保留10個主成分,使用如下代碼
// cv::createEigenFaceRecognizer(10);
//
// 如果你還希望使用置信度閾值來初始化,使用以下語句:
// cv::createEigenFaceRecognizer(10, 123.0);
//
// 如果你使用所有特徵並且使用一個閾值,使用以下語句:
// cv::createEigenFaceRecognizer(0, 123.0);
//
Ptr<FaceRecognizer> model = createEigenFaceRecognizer();
model->train(images, labels);
// 下面對測試圖像進行預測,predictedLabel是預測標簽結果
int predictedLabel = model->predict(testSample);
//
// 還有一種調用方式,可以獲取結果同時得到閾值:
// int predictedLabel = -1;
// double confidence = 0.0;
// model->predict(testSample, predictedLabel, confidence);
//
string result_message = format("Predicted class = %d / Actual class = %d.", predictedLabel, testLabel);
cout << result_message << endl;
// 這里是如何獲取特徵臉模型的特徵值的例子,使用了getMat方法:
Mat eigenvalues = model->getMat("eigenvalues");
// 同樣可以獲取特徵向量:
Mat W = model->getMat("eigenvectors");
// 得到訓練圖像的均值向量
Mat mean = model->getMat("mean");
// 現實還是保存:
if(argc==2) {
imshow("mean", norm_0_255(mean.reshape(1, images[0].rows)));
} else {
imwrite(format("%s/mean.png", output_folder.c_str()), norm_0_255(mean.reshape(1, images[0].rows)));
}
// 現實還是保存特徵臉:
for (int i =0; i < min(10, W.cols); i++) {
string msg = format("Eigenvalue #%d = %.5f", i, eigenvalues.at<double>(i));
cout << msg << endl;
// 得到第 #i個特徵
Mat ev = W.col(i).clone();
//把它變成原始大小,為了把數據顯示歸一化到0~255.
Mat grayscale = norm_0_255(ev.reshape(1, height));
// 使用偽彩色來顯示結果,為了更好的感受.
Mat cgrayscale;
applyColorMap(grayscale, cgrayscale, COLORMAP_JET);
// 顯示或者保存:
if(argc==2) {
imshow(format("eigenface_%d", i), cgrayscale);
} else {
imwrite(format("%s/eigenface_%d.png", output_folder.c_str(), i), norm_0_255(cgrayscale));
}
}
// 在一些預測過程中,顯示還是保存重建後的圖像:
for(int num_components =10; num_components <300; num_components+=15) {
// 從模型中的特徵向量截取一部分
Mat evs = Mat(W, Range::all(), Range(0, num_components));
Mat projection = subspaceProject(evs, mean, images[0].reshape(1,1));
Mat reconstruction = subspaceReconstruct(evs, mean, projection);
// 歸一化結果,為了顯示:
reconstruction = norm_0_255(reconstruction.reshape(1, images[0].rows));
// 顯示或者保存:
if(argc==2) {
imshow(format("eigenface_reconstruction_%d", num_components), reconstruction);
} else {
imwrite(format("%s/eigenface_reconstruction_%d.png", output_folder.c_str(), num_components), reconstruction);
}
}
// 如果我們不是存放到文件中,就顯示他,這里使用了暫定等待鍵盤輸入:
if(argc==2) {
waitKey(0);
}
return0;
}

⑩ 有沒有什麼可以處理掃描電鏡圖片的軟體

掃描電鏡圖片和其他任何圖片一樣,只要是數字圖像,都可以通過圖像處理軟體進行編輯處理。
根據處理目的,軟體可分為通用型和專業性,當然都有正版和盜版,這個你懂的!
通用型最強大的就是眾所周知的PS了,最精彩的是偽彩色處理,專業術語為圖像增強,提高信息襯度和豐度。
專業的軟體則從定量角度提取圖像信息,如下圖通過立體對圖像,進行三維重構,強大的資料庫為基礎,進而可進行表面粗糙度分析,顆粒度分析。

圖像的本質可以看成傅里葉變換模型,通過特殊濾波演算法,可修復圖像缺陷,單純從圖像美學角度,可以無限美化,例如清晰度,但基本無法提高圖像信息。

閱讀全文

與偽彩色演算法相關的資料

熱點內容
python正則表達式貪婪模式 瀏覽:646
愛國精神指的是什麼app 瀏覽:408
壽司解壓系列全集視頻 瀏覽:913
物體三維重建演算法 瀏覽:984
fuli直播app哪個好 瀏覽:918
租辦公室用什麼app 瀏覽:106
醫師定期考核刷題app哪個好 瀏覽:338
導出dmp文件命令 瀏覽:286
手機百度網盤怎麼解壓密碼文件 瀏覽:585
索引重新編譯 瀏覽:606
命令與征服4免cd補丁完美版 瀏覽:428
kotlin編譯為native 瀏覽:142
家用編譯機 瀏覽:550
電子加密貨幣最新政策 瀏覽:382
androidcanvas撤銷 瀏覽:271
安卓手機怎麼把圖標全部下移 瀏覽:186
飢荒被伺服器踢出怎麼進 瀏覽:173
c編譯器哪款好 瀏覽:732
快手寶哥發明什麼app 瀏覽:823
張艷玲編譯 瀏覽:68