本發(fā)明涉及圖像處理技術(shù)領(lǐng)域,尤其涉及一種圖像定位方法、透鏡陣列成像方法以及透鏡陣列成像裝置。
背景技術(shù):
透鏡陣列是一種包含有多個呈陣列排布的子透鏡的光學器件,現(xiàn)已廣泛應用于光場相機、復眼相機以及大視野的顯微相機中。其子透鏡在透鏡陣列內(nèi)以有序的、等間隔的方形\矩形陣列形式排布。每個子透鏡都可以對自身視野范圍內(nèi)的物體成像,每個子透鏡所呈圖像稱作子圖像。因此透鏡陣列在一次成像中得到的像圖(通過透鏡陣列后成像得到的原始圖像)內(nèi)包含了多個子圖像,且子圖像在像圖內(nèi)的排布形式對應子透鏡在透鏡陣列內(nèi)的排布形式。透鏡陣列成像的任務是對包含有多個子圖像的像圖進行處理,最終輸出的結(jié)果是由子圖像拼接形成的完整圖像,因此在像圖中正確定位子圖像是透鏡陣列成像的關(guān)鍵步驟之一。
雖然通過光學仿真可以獲取像圖中子圖像的位置,但由于理想環(huán)境中的光學仿真與實際復雜環(huán)境中的真實成像之間的誤差、以及實際加工精度的限制導致透鏡陣列在加工、組裝過程中產(chǎn)生器件誤差,光學仿真得到的子圖像的位置往往與實際成像中子圖像的位置有一定偏差。從上述描述可知,現(xiàn)有技術(shù)中采用透鏡陣列實現(xiàn)成像時由于像圖的子圖像定位不準確嚴重影響了成像質(zhì)量。
此外,對比文件1(CN105704402A)公開一種微透鏡陣列的成像方法與成像裝置,其主要技術(shù)方案是采用對單一光源成像生成底圖,然后在該光源條件下對實際場景進行成像,以獲取像圖,之后通過底圖和像圖進行亮度配準,為所述像圖中的第一象素建立背景概率模型;以及根據(jù)所述第一象素的背景概率模型,對所述像圖中的第一象素進行亮度均一化處理。上述消除微透鏡陣列成像的亮度分布不均的現(xiàn)象。
然而上述微透鏡陣列雖然對微透鏡陣列成像的亮度不均問題進行了解決,然而其沒有考慮用微透鏡陣列的各微透鏡之間存在一定的間距以及各微透鏡拍攝到的子圖像存在交疊,導致后續(xù)生成的圖像較為模糊,圖像質(zhì)量較差。
技術(shù)實現(xiàn)要素:
本發(fā)明提供一種圖像定位方法、透鏡陣列成像方法及透鏡陣列成像裝置,用于解決現(xiàn)有技術(shù)中未考慮透鏡陣列成像時未考慮各子透鏡定位,導致成像質(zhì)量不佳的問題。
本發(fā)明提供一種圖像定位方法,用于對一透鏡陣列拍攝場景所獲得的原始圖像中的子圖像進行定位,其中,所述透鏡陣列包括多個呈陣列排布的子透鏡。所述圖像定位方法包括以下步驟:
S210 獲取一通過所述透鏡陣列拍攝的參照圖像中對應各子透鏡的參照子圖像;
S220 獲取對應各子透鏡的參照子圖像的位置信息。
較佳地,所述步驟S220具體包括以下步驟:
S221 建立對應所述參照圖像的平面坐標系,計算所述參照圖像在X方向和Y方向上的投影;
S222 初步確定所述參照圖像中各子圖像中心點的X坐標值和Y坐標值;
S223 精確計算所述參照圖像中各子圖像中心點的X坐標精確值和Y坐標精確值。
較佳地,所述步驟S222包括以下步驟:
S2221 依據(jù)所述參照圖像在X方向上的投影,獲得第一投影數(shù)列;
S2222 采用Kmeans算法對所述第一投影數(shù)列進行聚類,初步確定各子圖像中心點的X坐標值;
S2223 依據(jù)所述參照圖像在Y方向上的投影,獲得第二投影數(shù)列;
S2224 采用Kmeans算法對所述第二投影數(shù)列進行聚類,初步確定各子圖像中心點的Y坐標值。
較佳地,所述步驟S223具體包括以下步驟:
S2231 依據(jù)各子圖像的所述X坐標值與所述Y坐標值,結(jié)合所述透鏡陣列中各子透鏡以等間隔排布,計算各子圖像在X方向上的X坐標均值以及在Y方向上的Y坐標均值;
S2232 將各子圖像上的X坐標值均減去所述X坐標均值,獲得一均值為0的第三數(shù)列,將各子圖像上的Y坐標值減去所述Y坐標均值,獲得一個均值為0的第四數(shù)列;
S2233 依據(jù)所述第三數(shù)列與第四數(shù)列以及透鏡陣列的行數(shù)和列數(shù),計算任意相鄰兩行的子圖像之間的第一間距和任意相鄰兩列的子圖像之間的第二間距;
S2234 基于所述第一間距、所述第二間距、所述X坐標均值及所述Y坐標均值精確計算各子圖像的X坐標精確值和Y坐標精確值。
本發(fā)明提供一種透鏡陣列成像方法,其中,所述透鏡陣列成像方法包括以下步驟:
S100 對所述透鏡陣列拍攝一場景得到的原始圖像進行亮度均一化處理,并獲取所述原始圖像的灰度圖像,所述灰度圖像中包括多個與各子透鏡一一對應的子圖像;
S200 獲取所述灰度圖像中各子圖像的位置信息;
S300 依據(jù)各子圖像的位置信息,獲取任意相鄰兩個子圖像的像圓之間滿足預設(shè)條件的拼接間距值;
S400 依據(jù)各子圖像的尺寸,提取各子圖像的像圓;
S500 按照所述拼接間距值,拼接所述像圓生成場景圖像,其中,所述步驟S200包括前面所述的圖像定位方法。
較佳地,所述步驟S100具體包括:
S110 通過所述透鏡陣列對光源成像,獲取參照圖像;
S120 通過所述透鏡陣列對所述場景成像,得到所述場景的原始圖像;
S130 依據(jù)所述參照圖像,對所述原始圖像進行亮度均一化處理,得到亮度均一的中間圖像;
S140 獲取所述中間圖像的灰度圖像。
較佳地,所述步驟S300具體包括:
S310 設(shè)置所述子圖像的像圓直徑的初始值;
S320 計算任意相鄰兩個像圓中心之間的位置間距;
S330 依據(jù)所述位置間距,計算任意相鄰兩個像圓行中第一行像圓與第二行像圓之間的行拼接間距值,以及任意相鄰兩個像圓列中第一列像圓與第二列像圓列之間的列拼接間距值;
S340 依據(jù)所述行拼接間距值與所述列拼接間距值,獲得任意相鄰兩個子圖像的像圓之間滿足預設(shè)條件的拼接間距值。
較佳地,所述步驟S400具體包括:
S410 獲取各子圖像的直徑;
S420 依據(jù)各子圖像的直徑,提取各子圖像的像圓。
較佳地,所述步驟S500具體包括:
S510 判斷所述場景經(jīng)由一主透鏡后所成的圖像位于所述透鏡陣列的靠近所述主透鏡一側(cè)還是背離所述主透鏡一側(cè);
S520 若經(jīng)由所述主透鏡后所成的圖像位于所述透鏡陣列的靠近所述主透鏡一側(cè),則每一子圖像的像圓圍繞其中心旋轉(zhuǎn)180°;
S530 若經(jīng)由所述主透鏡后所成的圖像位于所述透鏡陣列的背離所述主透鏡一側(cè),則每一子圖像的像圓無需旋轉(zhuǎn);
S540 獲取任意相鄰兩個子圖像的像圓之間滿足所述預設(shè)條件的拼接間距值,拼接所述像圓生成場景圖像。
較佳地,所述步驟S300在所述步驟S330與步驟S340之間還包括:
S350 將所獲取的各相鄰兩行之間的行拼接間距加權(quán)計算行拼接間距的行平均值,將所獲取的各相鄰兩列之間的列拼接間距加權(quán)計算列拼接間距的列平均值;
S360 分別判斷所述行平均值和所述列平均值是否在預設(shè)范圍內(nèi),若在所述預設(shè)范圍內(nèi)則進入步驟S340,若不在所述預設(shè)范圍內(nèi),則重新計算所述子圖像的初始直徑,直至新獲得的行平均值與列平均值均在所述預設(shè)范圍內(nèi)。
本發(fā)明還提供一種透鏡陣列成像裝置,其中,所述透鏡陣列成像裝置包括:
主透鏡;
圖像傳感器,用于將光學信號轉(zhuǎn)換為電信號;
透鏡陣列,設(shè)于所述主透鏡與所述圖像傳感器之間;
圖像處理器以及存儲器;其中,
所述圖像處理器分別連接所述圖像傳感器、所述透鏡陣列以及所述存儲器,調(diào)用所述存儲器中存儲的一段程序指令以執(zhí)行如前面所述的透鏡陣列成像方法。
為達成上述目的,本發(fā)明提出的圖像定位方法、透鏡陣列成像方法及透鏡陣列成像裝置,可準確定位透鏡陣列中各子透鏡的位置,從而為后續(xù)圖像處理提供了準確的數(shù)據(jù),提高了透鏡陣列的成像質(zhì)量。
附圖說明
圖1為本發(fā)明較佳實施方式的透鏡陣列成像方法的流程示意圖。
圖2為圖1中步驟S100的流程示意圖。
圖3為圖1中步驟S200的流程示意圖。
圖4為圖1中步驟S300的流程示意圖。
圖5為圖1中步驟S400的流程示意圖。
圖6為圖1中步驟S500的流程示意圖。
圖7為本發(fā)明一較佳實施方式的透鏡陣列成像裝置的結(jié)構(gòu)示意圖。
圖8為本發(fā)明另一較佳實施方式的透鏡陣列成像裝置的結(jié)構(gòu)示意圖。
具體實施方式
下面結(jié)合附圖和實施例對本發(fā)明進行詳細說明。需要說明的是,如果不沖突,本發(fā)明實施例以及實施例中的各個特征可以相互結(jié)合,均在本發(fā)明的保護范圍之內(nèi)。
請參見圖1,圖1為本發(fā)明較佳實施方式的透鏡陣列成像方法的流程示意圖。如圖1所示,本發(fā)明提供一種透鏡陣列成像方法,所述透鏡陣列包括多個呈陣列排布的子透鏡,這里的透鏡陣列優(yōu)選液晶透鏡陣列,液晶透鏡陣列中的各子透鏡按照陣列的方式排布,各子透鏡分別受電壓驅(qū)動改變液晶分子偏向形成折射率分布。所述透鏡陣列成像方法包括以下步驟:
S100 對所述透鏡陣列拍攝一場景得到的原始圖像進行亮度均一化處理,并獲取所述原始圖像的灰度圖像,所述灰度圖像中包括與所述子透鏡一一對應的子圖像;這里的原始圖像(也叫像圖)是通過透鏡陣列直接拍攝后經(jīng)圖像傳感器光電轉(zhuǎn)換后獲得的未經(jīng)處理的圖像。之后對這個原始圖像進行亮度均一化處理,消除原始圖像內(nèi)各子圖像亮度不均的現(xiàn)象,得到亮度均一的場景圖像。
S200 獲取所述灰度圖像中各子圖像的位置信息;
S300 依據(jù)各子圖像的位置信息,獲取任意相鄰兩個子圖像的像圓之間滿足預設(shè)條件的拼接間距值;
S400 依據(jù)各子圖像的尺寸,提取各子圖像的像圓;
S500 按照所述拼接間距值,拼接所述像圓生成場景圖像。
本發(fā)明提出的透鏡陣列成像方法,通過對透鏡陣列所成原始圖像進行處理,然后計算任意相鄰兩子圖像像圓之間的拼接間距,按照子圖像大小,提取出像圓進行拼接,生成場景圖像,由于是直接對透鏡陣列的真實成像結(jié)果進行處理,不受光學仿真與實際成像之間存在偏差、器件加工組裝誤差等問題的影響,因此生成的場景圖像更接近真實場景,提高了透鏡陣列的成像質(zhì)量。
請參見圖2,圖2為圖1中步驟S100的流程示意圖。如圖2所示,在一個具體實施例中,所述步驟S100具體包括:
S110 通過所述透鏡陣列對光源成像,獲取參照圖像(或稱作光照模型);上述參照圖像用于校正通過透鏡陣列實際拍攝場景圖像時各子圖像內(nèi)亮度不均的問題。在一個具體實施例中,獲取參照圖像的方法如下:
S111 通過透鏡陣列對單一均勻發(fā)光光源成像,得到一張僅有光源的光照圖像(可以是均勻發(fā)光板),記作I0,光照圖像I0的分辨率與透鏡陣列的分辨率相同,假設(shè)透鏡陣列的分辨率為橫向一行n個像素,豎向一列m個像素,即分辨率為n*m個像素,則光照圖像I0的分辨率也是n*m個像素,其被用于計算該透鏡陣列的參考圖像(或光照模型)。這里,可以事先確定獲得清晰的僅有光源的光照圖像的對焦面(即在該位置,透鏡陣列清晰對焦),發(fā)光板安置在該對焦面位置即可。
在通過該透鏡陣列成像時,需注意控制曝光時間在合適的范圍內(nèi),曝光不足或曝光過度都會導致計算得到的光照模型失真。
若獲取到的光照圖像I0不是灰度圖像(即黑白圖像),如為RGB彩色圖像,則需將其轉(zhuǎn)為灰度圖像。
光照圖像I0中存在的噪聲會對后續(xù)步驟造成干擾。為了達到降噪的目的,在拍攝光照圖像的過程中,可在相同的拍攝條件下(相同的光源、相同的物距、相同的曝光時間等),對同一光源重復拍攝若干張圖像,一般的,需要5張或以上數(shù)量,這些圖像的平均值即為一幅低噪的光照圖像I0,用這幅低噪的光照圖像I0來獲得該透鏡陣列的光照模型(參考圖像)。
S112 掃描光照圖像I0內(nèi)所有像素的灰度值,找出光照圖像I0中的最大灰度值,記為maxGrayscale。
S113 計算該透鏡陣列的光照模型Im,光照模型Im是一張最大灰度值為1的灰度圖像,其分辨率與透鏡陣列的分辨率相同,光照模型Im中第i行、第j列的像素灰度值為光照圖像I0中同一位置的像素灰度值除以最大灰度值maxGrayscale,即:
由于透鏡陣列定型后,其光照模型就被固定,所以此步驟僅需要在透鏡陣列定型時進行一次,可以是成像設(shè)備在出廠前進行,也可以是用戶在實際拍攝場景之前進行,主要目的是為獲得透鏡陣列中各子透鏡對光源成像方面表現(xiàn)的光學特性差異。從所獲取的僅有單一均勻發(fā)光光源的圖像中提取出透鏡陣列的參考圖像(光照模型)后,將參考圖像(光照模型)存入成像設(shè)備的存儲器中。在實際拍攝場景圖像時,直接從存儲器中讀取透鏡陣列的光照模型(參考圖像)的相關(guān)數(shù)據(jù)來對原始圖像進行圖像處理。
當然上述獲取參照圖像的方法只是較為場景的一種,本領(lǐng)域技術(shù)人員為獲得亮度均一圖像,也可以采用其它方法,比如用光學傳感器測量各子透鏡的亮度等,然后根據(jù)亮度值通過計算獲得各子透鏡的光學特性。
S120 通過所述透鏡陣列對所述場景成像,得到所述場景的原始圖像;場景的原始圖像也即像圖,是通過透鏡陣列直接拍攝后經(jīng)圖像傳感器光電轉(zhuǎn)換后獲得的未經(jīng)處理的圖像。
S130 依據(jù)所述參照圖像,對所述原始圖像進行亮度均一化處理,得到亮度均一的中間圖像;具體來說是通過透鏡陣列,對實際場景進行拍攝,得到原始圖像I1,其分辨率亦與透鏡陣列的分辨率相同,原始圖像I1中各個子圖像內(nèi)存在亮度不均的現(xiàn)象,使用透鏡陣列的光照模型(參考圖像)Im對原始圖像I1作亮度均一處理,消除各子圖像內(nèi)的亮度不均現(xiàn)象,得到亮度均一的中間圖像Iu。其中,亮度均一處理的方式如下(按照原始圖像I1是否為灰度圖像進行區(qū)分):
1)若原始圖像I1為灰度圖像:亮度均一的中間圖像Iu中第i行、第j列的像素灰度值為原始圖像I1中同一位置的像素灰度值除以光照模型Im中同一位置的像素灰度值,即:
通過以上公式即可獲得亮度均一的中間圖像Iu。
2)若原始圖像I1為彩色圖像,需分別對R、G、B三個通道進行亮度均一處理:
取原始圖像I1的R分量,按計算,得到亮度均一的中間圖像Iu的R分量IuR;
取原始圖像I1的G分量,按計算,得到亮度均一的中間圖像Iu的G分量IuG;
取原始圖像I1的B分量,按計算,得到亮度均一的中間圖像Iu的B分量IuB;
合成R分量IuR、G分量IuG、B分量IuB,得到亮度均一的中間圖像Iu。
S140獲取所述中間圖像的灰度圖像Ig。按照原始圖像I1是否為灰度圖像進行區(qū)分:
1)若原始圖像I1為灰度圖像,則中間圖像Iu亦為灰度圖像,Ig=Iu;
2)若原始圖像I1為彩色(R、G、B)圖像,則中間圖像Iu亦為彩色(R、G、B)圖像??砂凑找韵孪聝煞N方式計算Iu的灰度圖像Ig:
方法一、Ig=(IuR+IuG+IuB)/3,即依據(jù)亮度均一的中間圖像Iu的R分量IuR、B分量IuB以及G分量IuG進行加權(quán)平均獲得灰度圖像Ig;
方法二、依據(jù)經(jīng)驗公式Ig=0.299*IuR+0.587*IuG+0.114*IuB獲得灰度圖像Ig。
進一步地,請參見圖3,圖3為圖1中步驟S200的流程示意圖。如圖3所示,所述步驟S200包括一種圖像定位方法,該圖像定位方法主要步驟如下:
S210 獲取一通過所述透鏡陣列拍攝的參照圖像中對應各子透鏡的參照子圖像;每一參照子圖像與各子透鏡一一對應。這里的參照圖像可以是前面步驟S110中通過S111至S113獲得的,也可以是用其它能得到參照子圖像信息的方式重新拍攝得到的。
S220 獲取對應各子透鏡的參照子圖像的位置信息;這里,參照子圖像的位置信息,可以是獲得各參照子圖像的中心位置信息,也可是獲得各參照子圖像的邊緣位置信息。較佳方式是獲得各參照子圖像的中心位置信息,子圖像的中心位置呈現(xiàn)有序的、等間隔的陣列排布形式(如呈方形或矩形)。要定位各參照子圖像的中心位置,可以有較多算法來獲得,例如采用Kmeans算法、Blob分析算法,也可以直接用已知位置信息的模板來獲得各參照子圖像的中心位置。在一個透鏡陣列成像中定位子圖像中心位置的方法詳細描述如下:
S221 建立對應所述參照圖像的平面坐標系,計算所述參照圖像在X方向和Y方向上的投影。
S222 初步確定所述參照圖像中各子圖像中心點的X坐標值和Y坐標值;
S223 精確計算所述參照圖像中各子圖像中心點的X坐標精確值和Y坐標精確值。
其中步驟S222具體描述如下:
S2221 依據(jù)所述參照圖像在X方向上的投影,獲得第一投影數(shù)列;
S2222 采用Kmeans算法對所述第一投影數(shù)列進行聚類,初步確定各子圖像中心點的X坐標值;
S2223 依據(jù)所述參照圖像在Y方向上的投影,獲得第二投影數(shù)列;
S2224 采用Kmeans算法對所述第二投影數(shù)列進行聚類,初步確定各子圖像中心點的Y坐標值。
其中步驟S223描述如下:
S2231 依據(jù)各子圖像的所述X坐標值與所述Y坐標值,結(jié)合所述透鏡陣列中各子透鏡以等間隔排布,計算各子圖像在X方向上的X坐標均值以及在Y方向上的Y坐標均值;
S2232 將各子圖像上的X坐標值均減去所述X坐標均值,獲得一均值為0的第三數(shù)列,將各子圖像上的Y坐標值減去所述Y坐標均值,獲得一個均值為0的第四數(shù)列;
S2233 依據(jù)所述第三數(shù)列與第四數(shù)列以及透鏡陣列的行數(shù)和列數(shù),計算任意相鄰兩行的子圖像之間的第一間距和任意相鄰兩列的子圖像之間的第二間距;
S2234 基于所述第一間距、所述第二間距、所述X坐標均值及所述Y坐標均值精確計算各子圖像的X坐標精確值和Y坐標精確值。
在一個具體實施例中,上述步驟S220具體采用以下的方案來實現(xiàn):
S710計算上述參照圖像(因僅包括光源,也稱作空白圖像)在x方向(即水平方向)上的投影,得到一個投影數(shù)列
Xprof={x1,x2,x3,...,xn}
其長度n等于空白圖像的水平寬度。
具體來說,對空白圖像中每一豎直的像素列,對該像素列中的每一個像素的灰度值作累加求和,其總和作為投影數(shù)列中對應項的值。例如,計算空白圖像中第一列像素灰度值的總和,作為投影數(shù)列第一項的值,計算空白圖像中第二列像素灰度值的總和,作為投影數(shù)列第二項的值,以此類推,直至計算完空白圖像所有的像素列。
S720 使用Kmeans方法(K均值聚類)對投影數(shù)列Xprof進行聚類,初步估計子圖像中心位置的橫軸x的坐標值Xappr。
Kmeans方法聚類的類別數(shù)目K設(shè)置為空白圖像中子圖像的列數(shù)c(亦即:空白圖像中一行子圖像所包含的子圖像個數(shù)),聚類得到的K個聚類中心{c1,c2,c3,...,cK}即為對子圖像中心位置的x坐標值Xappr的初步估計,子圖像共c列,故一共有c個不同的x坐標值,此次聚類K=c。
Kmeans聚類算法的具體過程表述如下:
S7201 設(shè)置聚類算法的收斂閾值T及K個聚類中心{c1,c2,c3,...,cK}的初始值。設(shè)置聚類算法的停止條件:最大迭代次數(shù)達到maxIter次、或者在閾值T下聚類算法已經(jīng)收斂。設(shè)置迭代計數(shù)器為1。
K個聚類中心的初始值可以有多種設(shè)置方式,例如下述的a、b、c三種方式中任意一種都是可行的:
a、從1~n中任意選取K個互不相同的數(shù);
b、考慮到子圖像與相應子透鏡的排布形式一致,在空白圖像內(nèi)以有序的、等間隔的方形\矩形陣列形式排布,可以將K個聚類中心的初始值直接設(shè)置為等間隔的數(shù)列:
C、如果從光學仿真中獲得了子圖像的位置,也可以將這些子圖像的x坐標設(shè)為K個聚類中心的初始值。
S7202 對投影數(shù)列Xprof={x1,x2,x3,...,xn},計算每一項的聚類類別標號,得到數(shù)列Xprof的聚類類別標號序列
Xidx={idx1,idx2,idx3,...,idxn},具體如下:
對于數(shù)列Xprof={x1,x2,x3,...,xn}中的每一項xi,計算其下標i到K個聚類中心的距離,并找出與它距離最近的那個聚類中心,該聚類中心的序號就是xi對應的聚類類別標號idxi。例如(|c1-1|表示對C1-1取絕對值)。
對于x1,其下標1到K個聚類中心的距離依次是|c1-1|,|c2-1|,|c3-1|,...,|cK-1|,假設(shè)這K個距離值中最小的是則x1對應的聚類類別標號idx1是a1;
對于x2,其下標2到K個聚類中心的距離依次是|c1-2|,|c2-2|,|c3-2|,...,|cK-2|,假設(shè)這K個距離值中最小的是則x2對應的聚類類別標號idx2是a2;
……
對于xn,其下標n到K個聚類中心的距離依次是|c1-n|,|c2-n|,|c3-n|,...,|cK-n|,假設(shè)這K個距離值中最小的是則xn對應的聚類類別標號idxn是an;
S7203 逐一計算新的K個聚類中心{c′1,c′2,c′3,...,c′K}的值,計算方式如下:
計算新的C'j:找出聚類類別標號序列Xidx={idx1,idx2,idx3,...,idxn}中所有值為j的項(即聚類類別標號為j的項),獲取這些項的下標,根據(jù)下標找到這些項在投影數(shù)列
Xprof={x1,x2,x3,...,xn}
上述投影數(shù)列中對應的項,根據(jù)下面的公式計算C'j;
上式中,idxi=j表示在聚類類別標號序列Xidx={idx1,idx2,idx3,...,idxn}中所有值為j的項的下標。
例如:要計算新的C'1,則需先找出在聚類類別標號序列Xidx={idx1,idx2,idx3,...,idxn}中所有值為1的項(即聚類類別標號為1的項),假設(shè){idx1,idx2,idx3,idx4,idx5}是Xidx中值為1的項,這些項的下標是{1,2,3,4,5},則在投影數(shù)列Xprof中對應的項就是{x1,x2,x3,x4,x5},根據(jù)下面的公式計算C'1;
S7204 判斷聚類算法是否收斂,方法是逐一比較|c1-c′1|,|c2-c′2|,|c3-c′3|,...,|cK-c′K|是否小于收斂閾值T,若存在某個|cj-c′j|≥T,跳轉(zhuǎn)到下一步S7205;若所有的|cj-c′j|均小于T,則聚類算法已經(jīng)收斂,跳出聚類算法的流程;
S7205 逐一更新K個聚類中心的值:
{c1,c2,c3,...,cK}={c′1,c′2,c′3,...,c′K};
S7206 判斷聚類算法的迭代次數(shù)是否已經(jīng)達到maxIter次,若尚未達到,將迭代次數(shù)增加1,跳轉(zhuǎn)到S7202;若已達到,跳出聚類算法的流程;至此,Kmeans聚類算法結(jié)束。
S7207 對聚類得到的K個聚類中心{c1,c2,c3,...,cK}按從小到大排序,將排序的結(jié)果賦給子圖像中心位置的x坐標值Xappr。
,其中的c是原始圖像中子圖像的列數(shù)。
S730 計算空白圖像在y方向(即豎直方向)上的投影,得到一個投影數(shù)列Yprof={y1,y2,y3,...,ym},其長度m等于空白圖像的豎直高度。
具體來說,對空白圖像中每一條水平的像素行,對該行中的每一個像素的灰度值作累加求和,其總和作為投影數(shù)列中對應項的值。例如,計算空白圖像中第一行像素灰度值的總和,作為投影數(shù)列第一項的值,計算空白圖像中第二行像素灰度值的總和,作為投影數(shù)列第二項的值,以此類推,直至計算完空白圖像所有的像素行。
S740使用Kmeans方法(K均值聚類)對投影數(shù)列Yprof進行聚類,初步估計子圖像中心位置的y坐標值Yappr。
Kmeans聚類的類別數(shù)目K設(shè)置為空白圖像中子圖像的行數(shù)r(亦即:空白圖像中一列子圖像所包含的子圖像個數(shù)),聚類得到的K個聚類中心{c1,c2,c3,...,cK}即為對子圖像中心位置的y坐標值Yappr的初步估計(子圖像共r行,故一共有r個不同的y坐標值,此次聚類K=r)。聚類算法的具體過程與前面描述的步驟使用Kmeans方法(K均值聚類)對投影數(shù)列Xprof進行聚類”類似,在此不再贅述。
對聚類得到的K個聚類中心{c1,c2,c3,...,cK}按從小到大進行排序,將排序的結(jié)果賦給子圖像中心位置的y坐標值Yappr。
其中的r是子圖像的行數(shù)。
需要說明的是,雖然在前面的步驟中,聚類的類別數(shù)目都以“K”標記,并且聚類中心均采用了同樣的記號{c1,c2,c3,...,cK},但這只是一種約定俗成的記法(Kmeans的K即意味著K個類別,mean意味著均值,聚類中心的C意味著中心(即Centroid的首字母),事實上在前述步驟中的聚類類別數(shù)目K分別有著不同的賦值(步驟3中的K是子圖像的列數(shù)目,步驟5中的K是子圖像的行數(shù)目),步驟3)和步驟5)中的{c1,c2,c3,...,cK}也有著不同的數(shù)列長度和值,分別代表著初步估計的子圖像中心位置的x坐標值Xappr、y坐標值Yappr。
S750結(jié)合Xappr與Yappr,精確估計子圖像中心位置的x坐標值Xaccu、y坐標值Yaccu。這是由于子圖像與子透鏡的排布形式一致,在空白圖像內(nèi)以有序的、等間隔的方形\矩形陣列形式排布,具體方式如下:
S7501計算Xappr的第二項到倒數(shù)第二項的平均值xmean,計算Yappr的第二項到倒數(shù)第二項的平均值ymean,即:
其中c是子圖像的列數(shù),r是子圖像的行數(shù)。
計算中去除Xappr與Yappr的首、尾兩項的原因是:Xappr與Yappr的首項和尾項均代表了空白圖像最外圍一圈的子圖像的中心位置,由于光學成像的最外圍圖像往往畸變較大、且最外圍圖像有可能部分缺失等因素,初步估計得到的最外圍一圈的子圖像中心位置往往準確度較低,去除掉這些數(shù)據(jù)可以避免將誤差引入到子圖像中心位置的精確估計中。
S7502從Xappr的第二項到倒數(shù)第二項,每一項均減去平均值xmean,得到一個均值為0的新數(shù)列從Yappr的第二項到倒數(shù)第二項,每一項均減去平均值ymean,得到一個均值為0的新數(shù)列即:
其中i的取值范圍是{2,3,...,c-1}
其中j的取值范圍是{2,3,...,r-1}。
S7503將Xappr與Yappr合并,利用最小二乘法估計下式中的:
S7504利用上面得到的p1和xmean、ymean,精確估計子圖像中心位置的x坐標值Xaccu、y坐標值Yaccu,具體方式如下:
上述式中,
其中i的取值范圍為{1,2,3,...,c}
其中j的取值范圍為{1,2,3,...,r}
所述步驟S200除包括上述圖像定位方法外,還包括:
S230 將各參照子圖像的位置信息轉(zhuǎn)換為所述灰度圖像中對應各子圖像的位置信息。當獲取到各參照子圖像的位置信息后,灰度圖像Ig中各子圖像與各參照子圖像按照一一對應關(guān)系,即可獲得灰度圖像中的各子圖像的位置信息。
請參見圖4,圖4為圖1中步驟S300的流程示意圖。如圖4所示,在一個具體的實施例中,所述步驟S300具體包括:
S310 設(shè)置所述子圖像的像圓直徑的初始值;
在灰度圖像Ig中,為各子圖像選擇一個初始的直徑b0,在本發(fā)明中,一幅灰度圖像Ig內(nèi)的所有子圖像均使用同一直徑,提取出每個子圖像的像圓,即:
對于灰度圖像Ig內(nèi)的每個子圖像,以子圖像的中心位置為圓心、以b0為直徑(b0≤e,其中e表示相鄰兩個子圖像中心位置的間距),提取出一個圓形區(qū)域(以下將這個圓形區(qū)域稱為像圓),該像圓將被用于后續(xù)的自適應圖像拼接。
像圓的初始直徑b0可以從光學仿真的結(jié)果中獲得;另外,也可以根據(jù)經(jīng)驗選擇初始直徑b0,一般的,0.45*e≤b0≤0.85*e。
S320 計算任意相鄰兩個像圓中心之間的位置間距;
根據(jù)像圓直徑b0,確定拼接圖像時相鄰兩個像圓的中心位置間距d0,間距d0與像圓直徑b0滿足下面的關(guān)系
S330 依據(jù)所述位置間距,計算任意相鄰兩個像圓行中第一行像圓與第二行像圓之間的行拼接間距值,以及任意相鄰兩個像圓列中第一列像圓與第二列像圓列之間的列拼接間距值;具體來說,對于像圖中的每兩個相鄰的像圓行、每兩個相鄰的像圓列,按照下面的方式計算其最佳拼接間距,其中,像圓行、像圓列的計算順序可以打亂,但不會影響到最終結(jié)果:假設(shè)像圖中的子圖像有R行、C列,則上述行拼接間距值與上述列拼接間距值按以下步驟獲得:
S331 對于第1行像圓與第2行像圓(每一行像圓均包含有本行的C個像圓),依以下步驟計算其最佳拼接間距
(a)當?shù)?行像圓與第2行像圓的中心位置的上、下間距為d0時,計算每兩個上下相鄰的像圓的重疊區(qū)域;
(b)計算在第1行的C個像圓與第2行的C個像圓的所有重疊區(qū)域內(nèi),像素灰度值的標準差std(d0)。這個標準差std(d0)可以采用下面這個公式獲得:
(c)按照一定的步長s改變第1行像圓與第2行像圓中心位置的上、下間距,例如,s=1即代表每次將間距改變一個像素。依次計算當兩行像圓中心位置的上、下間距d':
d'={d0–s,d0-2s,d0-3s,…,d0–k*s,d0+2s,d0+s,d0+2s,d0+3s,…,d0+k*s}時,在所有的上、下相鄰的像圓的重疊區(qū)域內(nèi),像素灰度值的標準差std(d'),其中,k為整數(shù),并且使得k*s<0.4d0,一般可以選擇使k*s<0.2d0的k值與s值。
(d)比較當?shù)?行像圓與第2行像圓中心位置的上、下間距為{d0,d0–s,d0-2s,d0-3s,…,d0–k*s,d0+s,d0+2s,d0+3s,…,d0+k*s}時,對應的所有上、下相鄰像圓的重疊區(qū)域內(nèi)像素灰度值的標準差std,找出使標準差std最小的間距值,將這個使標準差std最小的間距值記為
S332 對于第2行像圓與第3行像圓,計算其最佳拼接間距對于第3行像圓與第4行像圓,計算其最佳拼接間距……;對于第R-1行像圓與第R行像圓,計算其最佳拼接間距
S333 對于第1列像圓與第2列像圓(每一列像圓均包含有本行的R個像圓),依以下步驟計算其最佳拼接間距
(A)當?shù)?列像圓與第2列像圓的中心位置的左、右間距為d0時,計算每兩個左右相鄰的像圓的重疊區(qū)域;
(B)計算第1列的R個像圓與第2列的R個像圓的所有重疊區(qū)域內(nèi),像素灰度值的標準差std(d0)。這個標準差可以按以下公式計算:
(C)按照一定的步長s改變第1列像圓與第2列像圓中心位置的左、右間距,例如,s=1即代表每次將間距改變一個像素。依次計算當兩列像圓中心位置的左、右間距:
d″={d0–s,d0-2s,d0-3s,…,d0–k*s,d0+2s,d0+s,d0+2s,d0+3s,…,d0+k*s}時,在所有的左、右相鄰的像圓的重疊區(qū)域內(nèi),像素灰度值的標準差std(d″)。其中,k為整數(shù),并且使得k*s<0.4d0,一般可以選擇使k*s<0.2d0的k值與s值。
(D)比較當?shù)?列像圓與第2列像圓中心位置的左、右間距為{d0,d0–s,d0-2s,d0-3s,…,d0–k*s,d0+s,d0+2s,d0+3s,…,d0+k*s}時,對應的所有左、右相鄰像圓的重疊區(qū)域內(nèi)像素灰度值的標準差std,找出使標準差std最小的間距值,將這個使標準差std最小的間距值記為
S334對于第2列像圓與第3列像圓,計算其最佳拼接間距對于第3列像圓與第4列像圓,計算其最佳拼接間距……;對于第C-1列像圓與第C列像圓,計算其最佳拼接間距
S350將上面步驟S330中得到的R-1個行間最佳拼接間距(其中i=1,2,3,...,R-1)及C-1個列間最佳拼接間距(其中j=1,2,3,...,C-1)分別計算行拼接間距的平均值和列拼接間距的平均值。
S360判斷上述平均值(包括行拼接間距的平均值和列拼接間距的平均值)的大小是否在預設(shè)范圍內(nèi);這個預設(shè)范圍依據(jù)實際需要設(shè)定。較佳地,這里的預設(shè)范圍為:各平均值小于等于d0+0.75*k*s、并且大于等于d0-0.75*k*s,進入步驟S340。
若平均值大于d0+0.75*k*s或小于d0-0.75*k*s,則重新計算子圖像的初始直徑b0
將上式中計算得到的b0作為子圖像的初始直徑,重新執(zhí)行步驟S310、S320、S330和S350以及S360直至R-1個行間最佳拼接間距(其中i=1,2,3,...,R-1)及C-1個列間最佳拼接間距(其中j=1,2,3,...,C-1)各自的平均值小于等于d0+0.75*k*s、并且大于等于d0-0.75*k*s為止,進入下一步驟。
S340 依據(jù)所述行拼接間距值與所述列拼接間距值,獲得任意相鄰兩個子圖像的像圓之間滿足預設(shè)條件的拼接間距值。這里的預設(shè)條件依據(jù)產(chǎn)品性能由用戶根據(jù)實際需要來設(shè)置。具體來說,對于R-1個行間最佳拼接間距(其中i=1,2,3,...,R-1)及C-1個列間最佳拼接間距(其中j=1,2,3,...,C-1),計算這些行間、列間最佳拼接間距與平均值的差的絕對值,若這些絕對值中存在著大于0.25*k*s(預設(shè)條件)的,找出對應的最佳拼接間距,并將其修改成平均值。
請參見圖5,圖5為圖1中步驟S400的流程示意圖。如圖5所示,在一個具體實施例中,所述步驟S400具體包括:
S410 獲取各子圖像的直徑;計算子圖像的直徑b采用以下公式:
(其中b向上取整)
在亮度均一的場景圖像Iu中,以子圖像的中心位置為圓心、以整數(shù)b為直徑。
S420 依據(jù)各子圖像的直徑,提取各子圖像的像圓。
本發(fā)明提出了一種在微透鏡陣列成像中定位子圖像中心位置的方法,該方法只需要微透鏡陣列的一次真實成像,即可從得到的像圖中獲取子圖像的中心位置,操作方法簡便,精度高。且由于該方法直接對微透鏡陣列的真實成像結(jié)果進行分析,不受光學仿真與實際成像之間存在偏差、器件加工組裝誤差等問題的影響,因此可信度極高。
因為透鏡陣列定型后,各子圖像在像圖中的中心位置就被固定,所以此方法僅需要在透鏡陣列定型時進行一次操作,將得到的子圖像的中心位置存入存儲器中,在實際拍攝時直接從存儲器中讀取子圖像的中心位置進行后續(xù)拼圖,而無需再次進行此操作。
請參見圖6,圖6為圖1中步驟S500的流程示意圖。如圖6所示,上述步驟S500具體包括以下步驟:
S510 判斷經(jīng)由主透鏡所成的圖像位于透鏡陣列面向所述主透鏡的一側(cè)還是背離所述主透鏡的一側(cè)。
S520 若主透鏡所成的圖像位于透鏡陣列的前方(即主透鏡所成的圖像位于透鏡陣列面向主透鏡的一側(cè),亦即主透鏡與透鏡陣列之間),則每個子圖像的像圓需要圍繞其中心旋轉(zhuǎn)180°。將拼接好的圖像圍繞其中心旋轉(zhuǎn)180°(因為主透鏡所成的像是實像,存在180°的旋轉(zhuǎn))。前述主透鏡所成的圖像通過所述透鏡陣列后即為原始圖像。
S530 若主透鏡所成的圖像位于透鏡陣列的后方(即主透鏡所成的圖像位于透鏡陣列背離主透鏡的一側(cè)),則每個子圖像的像圓無需旋轉(zhuǎn)。
S540 獲取任意相鄰兩個子圖像的像圓之間滿足所述預設(shè)條件的拼接間距值,拼接所述像圓生成場景圖像。
本發(fā)明還提供一種基于上述透鏡陣列成像方法的透鏡陣列成像裝置。請參見圖7,圖7為本發(fā)明一較佳實施方式的透鏡陣列成像裝置的結(jié)構(gòu)示意圖。如圖7所示,本發(fā)明較佳實施方式的透鏡陣列成像裝置,所述透鏡陣列成像裝置包括:主透鏡單元和圖像傳感器,設(shè)于所述主透鏡單元與所述圖像傳感器單元之間的透鏡陣列,所述透鏡陣列包括多個呈陣列排布的子透鏡,其中,所述透鏡陣列成像裝置還包括:
灰度圖像獲取模塊100,用于對所述透鏡陣列拍攝一場景得到的原始圖像進行亮度均一化處理,并獲取所述原始圖像的灰度圖像,所述灰度圖像中包括多個與各子透鏡一一對應的子圖像;
位置信息獲取模塊200,用于獲取所述灰度圖像中各子圖像的位置信息;
拼接間距值獲取模塊300,用于依據(jù)各子圖像的位置信息,獲取任意相鄰兩個子圖像的像圓之間滿足預設(shè)條件的拼接間距值;
像圓提取模塊400,用于依據(jù)各子圖像的尺寸,提取各子圖像的像圓;
場景圖像生成模塊500,用于按照所述拼接間距值,拼接所述像圓生成場景圖像。
較佳地,所述灰度圖像獲取模塊100包括:
參照圖像獲取單元,用于通過所述透鏡陣列對光源成像,獲取參照圖像;
原始圖像獲取單元,用于通過所述透鏡陣列對所述場景成像,得到所述場景的原始圖像;
亮度均一化處理單元,用于依據(jù)所述參照圖像,對所述原始圖像進行亮度均一化處理,得到亮度均一的中間圖像;
灰度圖像獲取單元,用于獲取所述中間圖像的灰度圖像。
較佳地,所述位置信息獲取模塊200包括:
參照子圖像獲取單元,用于獲取所述參照圖像中對應各子透鏡的參照子圖像;
位置信息獲取單元,用于獲取對應各子透鏡的參照子圖像的位置信息;
轉(zhuǎn)換單元,用于將各參照子圖像的位置信息轉(zhuǎn)換為所述灰度圖像中對應各子圖像的位置信息。
較佳地,所述拼接間距值獲取模塊300具體包括:
初始設(shè)置單元,用于設(shè)置所述子圖像的像圓直徑的初始值;
計算單元,用于計算任意相鄰兩個像圓中心之間的位置間距;
初始拼接間距值獲取單元,用于依據(jù)所述位置間距,計算任意相鄰兩個像圓行中第一行像圓與第二行像圓之間的行拼接間距值,以及任意相鄰兩個像圓列中第一列像圓與第二列像圓列之間的列拼接間距值;
成像拼接間距值獲取單元,用于依據(jù)所述行拼接間距值與所述列拼接間距值,獲得任意相鄰兩個子圖像的像圓之間滿足預設(shè)條件的拼接間距值。
請參見圖8,圖8為本發(fā)明另一較佳實施方式的透鏡陣列成像裝置的結(jié)構(gòu)示意圖。如圖8所示,本發(fā)明另一種透鏡陣列成像裝置,包括:
主透鏡10,可以是包括多個玻璃透鏡,用于拍攝場景圖像;主透鏡還可以是無變焦功能的相機攝像鏡頭。
圖像傳感器30,用于將光學信號轉(zhuǎn)換為電信號,較常見的是CMOS 傳感器和CCD傳感器;
透鏡陣列20,設(shè)于所述主透鏡10與所述圖像傳感器30之間;
圖像處理器40以及存儲器50;其中,
所述圖像處理器40分別連接所述圖像傳感器30、所述透鏡陣列20以及所述存儲器50,調(diào)用所述存儲器50中存儲的一段程序指令以執(zhí)行以下的透鏡陣列成像方法:
S100 對所述透鏡陣列拍攝一場景得到的原始圖像進行亮度均一化處理,并獲取所述原始圖像的灰度圖像,所述灰度圖像中包括多個與各子透鏡一一對應的子圖像;
S200 獲取所述灰度圖像中各子圖像的位置信息;
S300 依據(jù)各子圖像的位置信息,獲取任意相鄰兩個子圖像的像圓之間滿足預設(shè)條件的拼接間距值;
S400 依據(jù)各子圖像的尺寸,提取各子圖像的像圓;
S500 按照所述拼接間距值,拼接所述像圓生成場景圖像。
在一個具體實施例中,所述步驟S100具體包括:
S110 控制所述透鏡陣列對光源成像,并獲取參照圖像;
S120 控制所述透鏡陣列對所述場景成像,得到所述場景的原始圖像;
S130 依據(jù)所述參照圖像,對所述原始圖像進行亮度均一化處理,得到亮度均一的中間圖像;
S140 獲取所述中間圖像的灰度圖像。
在一個具體實施例中,所述步驟S200具體包括:
S210 獲取所述參照圖像中對應各子透鏡的參照子圖像;
S220 獲取對應各子透鏡的參照子圖像的位置信息;
S230 將各參照子圖像的位置信息轉(zhuǎn)換為所述灰度圖像中對應各子圖像的位置信息。
在一個具體實施例中,所述步驟S300具體包括:
S310 設(shè)置所述子圖像的像圓直徑的初始值;
S320 計算任意相鄰兩個像圓中心之間的位置間距;
S330 依據(jù)所述位置間距,計算任意相鄰兩個像圓行中第一行像圓與第二行像圓之間的行拼接間距值,以及任意相鄰兩個像圓列中第一列像圓與第二列像圓列之間的列拼接間距值;
S340 依據(jù)所述行拼接間距值與所述列拼接間距值,獲得任意相鄰兩個子圖像的像圓之間滿足預設(shè)條件的拼接間距值。
在一個具體實施例中,所述步驟S400具體包括:
S410 獲取各子圖像的直徑;
S420 依據(jù)各子圖像的直徑,提取各子圖像的像圓。
較佳地,所述步驟S500具體包括:
S510 判斷所述場景經(jīng)由一主透鏡后所成的圖像位于所述透鏡陣列的靠近所述主透鏡一側(cè)還是背離所述主透鏡一側(cè);
S520 若經(jīng)由所述主透鏡后所成的圖像位于所述透鏡陣列的靠近所述主透鏡一側(cè),則每一子圖像的像圓圍繞其中心旋轉(zhuǎn)180°;
S530 若經(jīng)由所述主透鏡后所成的圖像位于所述透鏡陣列的背離所述主透鏡一側(cè),則每一子圖像的像圓無需旋轉(zhuǎn);
S540 獲取任意相鄰兩個子圖像的像圓之間滿足所述預設(shè)條件的拼接間距值,拼接所述像圓生成場景圖像。
在一個具體實施例中,所述步驟S220具體包括:
S221 建立對應所述參照圖像的平面坐標系,計算所述參照圖像在X方向和Y方向上的投影;
S222 初步確定所述參照圖像中各子圖像中心點的X坐標值和Y坐標值;
S223 精確計算所述參照圖像中各子圖像中心點的X坐標值和Y 坐標值。
在一個具體實施例中,所述步驟S330具體包括:
S331 計算任意相鄰的第一行像圓和第二行像圓之間的行拼接間距;
S332 計算任意相鄰的第一列像圓和第二列像圓之間的列拼接間距。
在一個具體實施例中,所述步驟S300在所述步驟S330與步驟S340之間還包括:
S350 將所獲取的各相鄰兩行之間的行拼接間距加權(quán)計算行拼接間距的行平均值,將所獲取的各相鄰兩列之間的列拼接間距加權(quán)計算列拼接間距的列平均值;
S360 分別判斷所述行平均值和所述列平均值是否在預設(shè)范圍內(nèi),若在所述預設(shè)范圍內(nèi)則進入步驟S340,若不在所述預設(shè)范圍內(nèi),則重新計算所述子圖像的初始直徑,直至新獲得的行平均值與列平均值均在所述預設(shè)范圍內(nèi)。
本發(fā)明所采用的上述透鏡陣列成像裝置可應用于膠囊型醫(yī)療設(shè)備、航空拍攝設(shè)備、智能汽車、機器人、智能穿戴設(shè)備、監(jiān)視設(shè)備、醫(yī)學顯微鏡、微創(chuàng)醫(yī)療設(shè)備、AR/VR設(shè)備以及帶攝像頭的導彈等電子設(shè)備中。
以上所述僅為本發(fā)明的實施方式,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護范圍內(nèi)。