第四章 影像接合處理與色彩校正
4.2 色彩校正
4.2.1 係數法
利用xy座標當作係數將錯誤的色點映射到正確的色點上[44],如式4.6所示,係數 的排列是利用x與y座標之間的關係去定義。係數的排列如下表4.1所示。利用最小誤差 平方法(Least-Square Error, LSE)將矩陣參數求出,如式4.7所示。推演到更高階層如式 4.8所示。
⎥⎦
⎢ ⎤
⎣
⎥⎡
⎦
⎢ ⎤
⎣
=⎡
⎥⎦
⎢ ⎤
⎣
⎡
C C r
r
y x A A
A A y
x
22 21
12
11 (4.6)
表4.1 係數法係數表 First order
x , y
Second order
x , y , xy , x
2, y
2Third order
x , y , xy , x
2, y
2, x
2y , xy
2, x
3, y
3( ) ( )
4.2.2 複變映射轉換多項式法
複變函數中會利用z表示複變函數,z可以分成實部(real part)與虛部(imaginary part) 兩部分,如式4.9所示,將複變函數利用一個複數平面表示,x為橫軸與y為縱軸。將橫 座標視為實數,縱座標為虛數,將xy平面映射至uv平面,如圖4.7所示。利用多項式方 式去做為色彩校正的演算法,如式4.10為一個n階的多項式,其中a0,a1,a2,Lan為複數 常數(Complex constants)
( ) ( )
z最小誤差會出現於微分後的極值位置,並將所有微分後方程式加以整理並且利用
第 五 章
實 驗 結 果 分 析
5.1
實驗架構.
本實驗架構主要利用影像感測器拍攝色票,電腦將所拍攝的資訊儲存於電腦中,
並且使用Matlab軟體進行分析與色彩校正,如圖5.1所示。本實驗架構主要分為兩部 份,分別為內視鏡與環場式膠囊內視鏡,兩者之間最大的差別在於內視鏡機構為前看 式可以拍攝前方影像,然而環場式膠囊內視鏡利用錐狀鏡拍攝側邊影像,所以兩者所 拍攝與量測並不相同,另外環場式膠囊內視鏡拍攝環場式影像,並且利用影像重建理 論將所拍攝影像進行重建,影像感測器的規格如下表5.1。
圖5.1 實驗架構流程圖 表5.1 影像感測器規格
Item Description
Model CY300-M
TV system NTSC
Image device Super Color VGA Sensor Effective pixels 720(H)*525(V)
Frame rate 60 Field/sec
Lens view angle 60∘
Lens F/# 2.8
環場式膠囊內視鏡的實驗流程,如圖5.2所示,先利用膠囊內視鏡進行色票拍攝,
將所拍攝色票資訊存入電腦,並且利用膠囊內視鏡進行假體拍攝,將拍攝到的假體影 像進行接合與影像處理,最後將處理後的影像利用色彩校正將其色彩還原至正確色 彩。
圖5.2 環場式膠囊內視鏡腸道假體影像重建流程
利用環場式膠囊內視鏡置於色票上方,利用內部所投射出的光源投光於錐狀鏡 上,由錐狀鏡反射於色票上進行拍攝,如圖5.3所示。光纖光譜儀可以量測光譜資訊進 行光譜分析。
圖5.3 環場式膠囊內視鏡量測色票
可以很有效率的拍攝色票資訊。內視鏡分為標準燈源與LED燈源下拍攝色票,分別對 影像感測器與燈源做校正,如圖5.4所示。
圖5.4 內視鏡量測色票
環場式膠囊內視鏡放入腸道假體中,可以模擬環場式膠囊內視鏡在於腸道假體中 拍攝腸道影像。本論文所使用的假體利用美國NASCO公司所生產的直腸模型,如圖5.5 所示,此模型包含乙狀結腸、結腸、盲腸與闌尾等器官,內部提供有有蒂的息肉、無 蒂的息肉、增生型息肉與結腸癌等病徵點[45]。
圖5.5 NASCO直腸模型
5.2 腸道假體影像接合
環場式膠囊內視鏡拍攝草履蟲影像,如圖5.6所示,利用皮爾森相關係法與笛卡兒
座標法將所拍攝影像展開與接合,如圖5.7所示,由圖中可以發現所拍攝影像因為投光 不平均與幾何圖形不同造成縫隙問題,故利用減少縫隙方法將縫隙減少,如圖5.8所 示,分別利用平均加權平滑法與最佳化縫隙法,由人眼觀察圖形可以發現縫隙有減少 的效果,接著使用峰值訊號雜訊比去比較經處理縫隙後影像與未處理縫隙影像作比 較,並以量化方式呈現其中的差異,如表5.2所示。
圖5.6 草履蟲影像
圖5.7 草履蟲接合影像
圖5.8 (a)草履蟲接合圖, (b)平均加權平滑法, (c)最佳化縫隙法 表5.2 PSNR比較表
Image Stitching Weighted Average Method Optimal Seam Method
PSNR 17.56 17.57 35.82
擷取到的影像利用笛卡兒座標轉換,將極座標影像轉換成直角座標影像,如圖5.9 所示,並且利用皮爾森相關係數法,將影像進行接合,如圖5.10所示,由圖可以知道影 像接合時,因為幾何圖形不同與亮度不平均造成縫隙問題,利用演算法將縫隙減少,
如圖5.11所示。
圖5.9 經直角座標轉換圖
圖5.10 腸道假體重建圖
圖5.11 (a)平均加權平滑法, (b)最佳縫隙法
5.3
色域體積計算分析
色票所定義的色彩資訊在於D65燈源下所拍攝的資訊,所以內視鏡先於D65標準燈 源下量測色票位置,圖5.12與圖5.13所表示著色票所定義的色度圖與內視鏡於D65標準 燈源下所拍攝的色度圖,圖5.14表示著兩者合併成一張進行比較,受到影像感測器的製 程影響,利用色差公式計算,兩者之間的色差值為8.2973。將D65燈源換為LED燈源進 行拍攝,內視鏡所拍攝的色度圖如圖5.15與色票所定義的色彩資訊之間的色差為 21.4483,由數值上可知燈源對於色差的影響較大。
圖5.12 色票色度圖
圖5.13 影像感測器色度圖(D65燈源)
圖5.14 色票與影像感測器色度圖(D65燈源)
圖5.15 色票與影像感測器色度圖(LED燈源)
將環場式膠囊內視鏡與內視鏡的色域面積做比較,如圖5.16所示,內視鏡與環場式 膠囊內視鏡的色域面積並不相同,內視鏡色域面積較為大,而環場式膠囊內視鏡的色 域面積較為小,可能是受到環場式膠囊內視鏡投光不均勻所造成色域面積的壓縮,之 間的誤差為4.4095。
圖5.16 內視鏡(LED燈源)
利用光纖光譜儀量測內視鏡照射參考白色票光譜與環場式膠囊內視鏡照射參考白 色票光譜,如圖5.17所示,由圖可以知道因為機構不同造成光譜不同而產生色偏問題,
環場式膠囊內視鏡與內視鏡之間機構的差異在於膠囊殼與錐狀鏡,將膠囊殼去除掉,
進行光譜量測,如圖5.18所示。
圖5.17 內視鏡與環場式膠囊內視鏡光譜
圖5.18 去除膠囊殼拍攝色票
圖5.19所表示的是去除膠囊殼與有膠囊殼的環場式膠囊內視鏡的光譜,圖中可以發 現所投射的光源因為受到膠囊殼影響,造成光譜在於500~700nm波段不同。
圖5.19 有無膠囊殼的環場式膠囊內視鏡光譜
圖5.20 有無膠囊殼的環場式膠囊內視鏡光譜增益比較
5.4 色彩校正結果分析
由量測結果分析可以發現到,內視鏡會受到燈源與影像感測器的影響而產生色 偏,環場式膠囊內視鏡除了受到燈源與影像感測器的影響外,還會受到錐狀鏡機構的 影響而色域面積壓縮,由以上的結果來看,內視鏡與環場式膠囊內視鏡所拍攝的色彩 並非真實色彩,而會受到內部的影響而產生色偏,例如影像感測器、燈源與機構等,
故需要利用色彩校正將其色彩校正還原至真實色彩中。
本論文提出兩種方法去校正色彩,分別為係數法與複變映射轉換多項式法,並且
著每個人主觀的思想在其中,而造成精準度降低。圖5.21與圖5.22所表示的是係數法與 複變映射轉換分別利用不同階數係數色彩校正後的色域面積,表5.3所表示係數與色差 的關係,最後係數法可以改善色差至1.539,而複變映射轉換多項式法可以改善色差至 1.324,因為複變映射轉換多項式法式利用不同係數代表著不同階層,而複變映射轉換 多項式法每個係數只代表著一個係數而非一個階層,故複變映射轉換係數法只需利用 較少係數就可達到低色差的色彩校正。
利用經過縫隙處理的腸道假體模型的腸道重建影像進行色彩校正,圖5.23分別為係 數法與複變映射轉換多項式法校正後的影像。經過色彩校正後的腸道假體影像。
圖5.21 係數法色域面積比較
圖5.22 複變映射轉換多項式法色域面積比較
表5.3 各種色差比較
Regression method Complex mapping polynomial method
Number Color difference Order Color difference
2 2.629 2 3.296
3 2.157 3 2.461
4 1.980 4 2.082
5 1.856 5 1.621
6 1.559 6 1.471
7 1.541 7 1.325
8 1.539 8 1.324
圖5.23 (a)係數法, (b) 複變映射轉換多項式法
第 六 章
硬 體 架 構
6.1
FPGA發展版
本研究使用ALTERA公司所開發的Cyclone III發展板,如圖6.1所示,擁有高速匯流 卡(High Speed Mezzanine Connector, HSMC)、DDR2 SDRAM與發光二極體等硬體設 備。此發展板搭載Cyclone III EP3C120F780晶片,此顆晶片擁有著11900個邏輯單元(les) 與3888 Kbits記憶體等組件[46],整體架構圖如圖6.2所示。
圖6.1 Cyclone III 發展版
圖6.2 Cyclone III 硬體架構[46]
利用Bitec公司所開發的高速匯流卡[47],如圖6.3所示。此卡可以與ALTERA公司 所開發的板子進行連結,此卡的用途用於讀取影像資訊,所能讀取的規格包含PAL、
NTSC與S-Video等格式,輸出的格式包含VGA、DV與S-Video,整體架構圖6.4所示。
圖6.3 Bitec 高速匯流卡
圖6.4 Bitec 高速匯流卡硬體架構
6.2
軟體實現
軟體架構如圖6.5所示,影像由高速匯流卡輸入,高速匯流卡會依據輸入的Vertical blank、Pixel clock與Field signal將Data轉換至Ycbcr色彩空間,Ycbcr色彩空間轉換至 RGB色彩空間。將第四章所提到的色彩校正的複變映射轉換多項式帶入演算法中,將 原本的RGB映射到新的RGB值中,再經由Nios II處理器將新的RGB經由DVI傳送到螢 幕。
圖6.5 FPGA軟體架構圖
利用Verilog實現演算法,首先將RGB色彩空間轉換至xyY色彩空間,將式3.4中矩 陣係數利用Verilog撰寫,其中八位元為小數有效位元,整數部分為一位元,以下為 Verilog程式碼:
wire [16:0] mul1 = rb * 9'b001101010;
wire [16:0] mul2 = gb * 9'b001011100;
wire [16:0] mul3 = bb * 9'b000101110;
wire [16:0] mu21 = rb * 9'b000110110;
wire [16:0] mu22 = gb * 9'b010110111;
wire [16:0] mu23 = bb * 9'b000010010;
wire [16:0] mu31 = rb * 9'b000000101;
wire [16:0] mu32 = gb * 9'b000011111;
wire [16:0] mu33 = bb * 9'b011110011;
wire [8:0] D_YI = (mu21+mu22+mu23)>>8;
wire [8:0] D_ZI = (mu31+mu32+mu33)>>8;
wire [10:0] sum_XYZ = D_XI+D_YI+D_ZI;
wire [16:0] sum_X = D_XI<<8;
wire [16:0] sum_Y = D_YI<<8;
wire [9:0] D_xI = sum_X/sum_XYZ;
wire [9:0] D_yI = sum_Y/sum_XYZ;
wire [9:0] D_zI = 9'b100000000-D_xI-D_yI;
利用Matlab將轉換係數計算出來,並且代入Verilog中,在這裡利用兩階多項式去 進行色彩校正,因為其中轉換係數有負值,須利用有數小數進行運算,八位元為小數 有效位數與一位元為整數有效位數,第一位元為判別正負位數,其Verilog程式碼如 下:
wire [19:0] mbx2 = (D_xI*D_xI);
wire [9:0] max2 = mbx2[17:8];
wire [19:0] mby2 = (D_yI*D_yI);
wire [9:0] may2 = mby2[17:8];
wire [19:0] mb2xy = (D_xI*D_yI)*2;
wire [9:0] ma2xy = mb2xy[17:8];
wire [9:0] mumxb1 = 10'b0000001010;
wire [19:0] mumxb2 = 10'b0011100110*D_xI;
wire [9:0] mumxa2 = mumxb2[17:8];
wire [19:0] mumxb3 = (max2-may2)*10'b0001101010;
wire [9:0] mumxa3 = mumxb3[17:8];
wire [9:0] mumx = mumxb1+mumxa2+mumxa3;
wire [9:0] mumyb1 = 10'b1111111110;
wire [19:0] mumyb2 = 10'b0110000110*D_yI;
wire [9:0] mumya2 = mumyb2[17:8];
wire [29:0] mumyb3 = ma2xy*19'b1111111111110001000;
wire [9:0] mumya3 = mumyb3[17:8];
wire [9:0] mumy = mumyb1+mumya2+mumya3;
wire [9:0] mumz = 9'b100000000-mumx-mumy;
最後利用將校正後的xyY色彩空間轉換至RGB色彩空間,其Verilog程式碼如下:
wire [19:0] sum_z = mumz*D_YI;
wire [19:0] sum_x = mumx*D_YI;
wire [9:0] D_ZO = sum_z/mumy;
wire [9:0] D_XO = sum_x/mumy;
wire [21:0] muO11 = D_XO*12'b001100111110;
wire [32:0] muO12 = D_YI*23'b11111111111111001110110;
wire [32:0] muO13 = D_ZO*23'b11111111111111110000000;
wire [11:0] muOC11=muO11[19:8];
wire [11:0] muOC12=muO12[19:8];
wire [11:0] muOC13=muO13[19:8];
wire [13:0] RBO1 = muOC11+muOC12+muOC13;
wire [9:0] RBO2 = RBO1[9:0];
wire [32:0] muO21 = D_XO*23'b11111111111111100001000;
wire [21:0] muO22 = D_YI*12'b000111100000;
wire [21:0] muO23 = D_ZO*12'b000000001011;
wire [11:0] muOC21=muO21[19:8];
wire [11:0] muOC22=muO22[19:8];
wire [11:0] muOC23=muO23[19:8];
wire [13:0] GBO1 = muOC21+muOC22+muOC23;
wire [9:0] GBO2 = GBO1[9:0];
wire [21:0] muO31 = D_XO*12'b000000001110;
wire [32:0] muO32 = D_YI*23'b11111111111111111001100;
wire [21:0] muO33 = D_ZO*12'b000100001111;
wire [11:0] muOC31=muO31[19:8];
wire [11:0] muOC32=muO32[19:8];
wire [11:0] muOC33=muO33[19:8];
wire [13:0] BBO1 = muOC31+muOC32+muOC33;
wire [9:0] BBO2 = BBO1[9:0];
表6.1為經由運算後新RGB值,利用ModelSim軟體模擬與Matlab軟體所運算做比 較,Modeslsim模擬圖如圖6.6所示。
表6.1 模擬結果表
Item Software
Item 1 Item 2 Item 3
Original color (128,128,128) (180,128,134) (250,240,180) Matlab (105,136,98) (167,135,105) (206,254,132) ModelSim (102,133,98) (162,135,108) (202,254,141)
圖6.6 (a) (128,128,128), (b) (180,128,134), (c) (250,240,180)
數位運算與類比運算計算方式並不一樣,數位運算並沒有浮點數運算,所以數位
數位運算與類比運算計算方式並不一樣,數位運算並沒有浮點數運算,所以數位