偽彩色圖像
一、原理介紹:
偽彩色(Pseudo-color)圖像的每個像素的顏色不是由每個基本色分量的數值直接決定,實際上是把像素當成調色板(Palettes)或顏色查找表(Color Look-Up Table,CLUT)的表項入口地址,根據該地址可查找出包含實際R、G、B的強度值,如果圖像中的顏色在調色板或彩色查找表中不存在,則調色板會用一個最為接近的顏色來匹配。通過查找出的R、G、B強度值產生的色彩不是圖像本身真正的顏色,因此稱為偽彩色。
偽彩色處理:
將彩色圖像轉換為灰度圖像是一個不可逆的過程,灰度圖像也不可能變換為原來的彩色圖像。而某些場合需要將灰度圖像轉變為彩色圖像;偽彩色處理主要是把黑白的灰度圖像或者多波段圖像轉換為彩色圖像的技術過程。其目的是提高圖像內容的可辨識度。其中方法有,灰度分成法,灰度變換法。
真彩色
(true color)真彩色是指在組成一幅彩色圖像的每個像素值中,有R,G,B三個基色分量,每個基色分量直接決定顯示設備的基色強度,這樣產生的彩色稱為真彩色。例如用RGB 8∶8∶8表示的彩色圖像,R,G,B各用8位,用R,G,B分量大小的值直接確定三個基色的強度,這樣得到的彩色是真實的原圖彩色。
在許多場合,真彩色圖通常是指RGB 88,即圖像的顏色數等于2^24,也常稱為全彩色(full color)圖像。但在顯示器上顯示的顏色就不一定是真彩色,要得到真彩色圖像需要有真彩色顯示適配器,在PC上用的VGA適配器是很難得到真彩色圖像的。
直接色
(direct color)每個像素值分成R,G,B分量,每個分量作為單獨的索引值對它做變換。也就是通過相應的彩色變換表找出基色強度,用變換后得到的R,G,B強度值產生的彩色稱為直接色。它的特點是對每個基色進行變換。
用這種系統產生顏色與真彩色系統相比,相同之處是都采用R,G,B分量決定基色強度,不同之處是后者的基色強度直接用R,G,B決定,而前者的基色強度由R,G,B經變換后決定。因而這兩種系統產生的顏色就有差別。試驗結果表明,使用直接色在顯示器上顯示的彩色圖像看起來真實、很自然。
這種系統與偽彩色系統相比,相同之處是都采用查找表,不同之處是前者對R,G,B分量分別進行變換,后者是把整個像素當作查找表的索引值進行彩色變換。
2.1圖像產生
如下圖3所示,使用matlb將分辨率為640*480的len.bmp圖像的R、G、B各個分量的二維圖像數據,如圖4所示,轉換成一維數據存到img_r_data.txt、img_g_data.txt、img_b_data.txt文本里供Modelsim讀取。
圖3matlabgen代碼
2.2圖像處理
2.2.1 rgbtoyuv 灰度化算法公式
采用rgbtoyuv格式的顏色空間的轉換圖像算法為例,轉換公式如下 ,
2.2.2 graytorgb偽彩算法公式
如下圖所示是matalb 代碼 ,三個顏色通道對應3個公式:
2.2.3 FPGA實現
在FPGA實現過程中,沒有直接使用上述matlab代碼的”if-else”進行圖像的點操作,這里我使用查找表的方式實現,把三個顏色通道R、G、B 看成是灰度(0~255)的函數,通過matlab得到各個顏色的映射值的mif文件,然后導入fpga的rom 中,當像素進來時直接作為的rom的讀地址,rom的輸出就是處理得到的偽彩色圖像。生成mif文件的matlab代碼,其中t可以理解為灰度值,R、G、B為各顏色通道值。
FPGA實現時分別把對應的線性映射數值存到rom中:
2.3圖像顯示
在編寫完RTL代碼后加入視頻流仿真平臺,處理的后的結果如圖6所示,其中圖像的復現的matlab代碼如圖5所示:
圖5matlabshow代碼
責任編輯:xj
原文標題:FPGA實現偽彩色圖像
文章出處:【微信公眾號:FPGA自習室】歡迎添加關注!文章轉載請注明出處。
-
FPGA
+關注
關注
1626文章
21667瀏覽量
601843 -
matlab
+關注
關注
182文章
2963瀏覽量
230160 -
仿真
+關注
關注
50文章
4043瀏覽量
133416 -
ModelSim
+關注
關注
5文章
174瀏覽量
47123
原文標題:FPGA實現偽彩色圖像
文章出處:【微信號:FPGA_Study,微信公眾號:FPGA自習室】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論