紅眼檢測的方法
2024-01-26 13:42:15 1
專利名稱:紅眼檢測的方法
紅眼檢測的方法
背景技術:
儘管有在減少照片中的紅眼的發生方面的技術改進,但紅眼對於專業人員、消費者和公司而言仍是普遍的問題。已經嘗試了許多解決方案以處理此頻繁的問題,包括產生紅眼消減算法。然而,嘗試解決紅眼問題的大多數先前的方法已簡單地包括在應用檢測處理之前降低圖像的解析度。另外,與存儲器效率相反,先前的算法是針對計算速度和性能的穩健性而設計的。先前的算法要求多達7個附加平面,要求每個像素7位元組的存儲。一個平面需要存儲RGB空間中的紅色(redness)的測量結果,一個平面存儲CieLab空間中的紅色的測量結果,四個平面存儲綜合的(integrated) RGB紅色值,並且一個平面存儲超出紅色閾值的像素的二進位圖。雖然這些方法已經在個人計算機上產生了令人滿意的結果,但對於嵌入式硬體而言還不能這樣說。現有紅眼消減算法常常要求大量的可用存儲器。諸如印表機、 數位照相機、掃描儀之類的依賴於嵌入式硬體的設備和所有一體化設備通常由於存儲器限制而在利用紅眼消減算法時表現得不好。
通過結合附圖進行的以下詳細說明,本發明的各種特徵和優點將是顯而易見的, 附圖一起以示例的方式舉例說明本發明的特徵,並且在附圖中
圖1舉例說明正在被系統訪問的數字圖像和由系統產生的其中已識別紅眼的數字圖像。圖2是舉例說明根據本發明的實施例的、用於標記紅像素的方法的流程圖。圖3舉例說明根據本發明的實施例的、在像素圖(pixel map)上描繪的二維陣列的表示。圖4是舉例說明根據本發明的實施例的、用於產生和擴展相鄰群組的方法的流程圖。圖5是舉例說明用於確定相鄰群組是否是紅眼的方法的流程圖。圖6是舉例說明根據本發明的實施例的、用於檢測紅眼的高級方法的流程圖。圖7舉例說明可以獨立地或相互結合地使用所述系統的不同裝置和設備、印表機、數位照相機、計算機、伺服器和存儲介質。
具體實施例方式現在將對在附圖中舉例說明的示例性實施例進行參考,並且將在本文中使用特定語言來對其進行描述。然而,應理解的是,並不從而意圖限制本發明的範圍。在相關領域內並已擁有本公開的普通技術人員將想到的本文舉例說明的發明特徵的變更和其它修改以及如本文舉例說明的本發明的原理的附加應用將被視為在本發明的範圍內。圖1舉例說明正在被系統100訪問的數字圖像110和由系統100產生的其中已識別紅眼的數字圖像180。該系統包括數字採樣器120、下採樣數字圖像130、下採樣數字圖像130的像素圖140、像素消除器(eliminator) 150、像素分段器(segmentor) 160和群組分類器170。如本領域內的普通技術人員能夠認識到的,除圖1中所描繪的那些之外和/或替代圖1中所描繪的那些,系統100可以包括附加的組件或子系統。如上所述,數字圖像110被系統100訪問。圖1中所示的數字採樣器120接收數字圖像110並產生下採樣數字圖像130。然後由像素消除器150來產生並訪問下採樣數字圖像130的像素圖140。如上所述,如圖1中所示的像素消除器150訪問下採樣數字圖像 130的像素圖140。像素消除器150掃描包含在下採樣數字圖像130的像素圖140中的每個像素,並計算每個像素的紅色水平。每個像素的紅色水平的計算可以在一個或多個階段中完成。現在將參考圖2中的流程圖來解釋如圖1中所描繪的像素消除器150的操作。圖 2是舉例說明根據本發明的實施例的、用於標記像素的方法的流程圖。在一個實施例中,該方法可以由系統100來執行。在其中由系統100來執行圖2的方法的實施例中,計算每個像素的紅色值,需要像素消除器150最初定義紅閾值,如在步驟210中那樣。然後,像素消除器可以在步驟220中檢查是否已經分析並標記了像素圖150上的每個像素。像素消除器 150可以掃描像素圖140上的任何未標記像素,並且隨後到達下一個像素,如在步驟230中那樣。然後,像素消除器可以計算每個像素的紅色,如在步驟240中那樣。在計算每個像素的紅色時,像素消除器將當前正在被掃描的像素的紅色水平與所定義的紅閾值相比較,如在步驟250中那樣。根據像素彩色成分來測量每個像素的紅色。如果紅色值在閾值之上,則將像素標記為「紅」,如在步驟260中那樣。如果紅色值在閾值之下,則中止紅色計算且方法返回至步驟220。然後,像素消除器150可以掃描並計算像素圖140上的任何另外的未標記像素的紅色。在另一實施例中,在計算像素圖140上的每個像素的紅色水平時,像素消除器150 可以進一步確定標記為紅的像素的RGB整數值並使用具有在步驟210中使用的僅一個除運算的整數算法。然後,像素消除器可以產生閾值RGB值並將這些值與來自步驟210的標記為紅的像素的RGB整數值相比較。然後,系統100可以記錄計算的結果並在群組分類器 170中使用所述結果,如在步驟270中那樣。在另一實施例中,可以使用步驟210中的像素的CieLab值來執行上述計算。如本領域的普通技術人員能夠認識到的,除圖1和圖2中所描繪的那些之外和/或替代圖1和圖2中所描繪的那些,可以使用其它方法或值來計算像素圖140上的每個像素的紅色值。如本領域的普通技術人員能夠認識到的,圖1的像素消除器150使用單個平面來存儲紅色的基於RGB的測量結果180。另外,此算法的實驗結果已導致僅四分之一的平面被用來存儲通過像素消除器180的像素的像素圖。結果,對算法的動態存儲器要求已被減少到不到以前的五分之一,因為對於圖1和2的實施例而言,僅要求每個像素1. 25個字節。因此大大地減少了處理數字圖像110所需的圖像相關存儲量。另外,提出的方法具有急劇減小的動態存儲器印跡(memory footprint),尤其是當與其中可能要求每個像素7個字節的傳統方法相比時。此外,在執行單個除運算時,系統節省時鐘周期和處理時間。許多先前的方法已經圍繞跨越相同尺寸的許多區域連續地計算紅色測量結果或彩色成分的平均值(需要多次除運算)的想法進行考慮。
本發明的實施例通過執行單個除運算而不同於先前的方法,這導致在嵌入式硬體設備中的改善的性能時間和較少的資源分配。結果,本發明使用較少的資源並因此產生主機設備在檢測紅眼的同時執行另外的任務的機會。在一個實施例中,可以以分批的方式或者作為在用戶在可攜式列印設備或手持式數位照相機上瀏覽圖像的同時執行的後臺例行程序來執行圖2的方法。因此,執行圖2的方法(尤其是作為後臺進程)對於本領域的普通技術人員來說將不是明顯或顯而易見的。現在返回至圖1,已採樣數字圖像130的像素圖140 (其中像素被像素消除器150 標記)隨後被傳遞至像素分段器160。像素分段器160完整地對像素圖140進行操作,並掃描像素圖的每行以得到已標記的紅像素,並且在發現一個或多個已標記紅像素相互鄰近時產生已標記紅像素的「相鄰群組」。在本文中,「相鄰群組」被定義為可以在數字圖像中產生紅眼的一個或多個已標記紅像素。圖3舉例說明根據本發明的實施例的、在(圖1)的下採樣數字圖像130的像素圖 140上描繪的二維陣列300的表示。圖3的示例包括像素圖140、未被掃描的像素圖的下 20% 330、二維陣列300的層一(310)和二維陣列300的層二(320)。在一個實施例中,像素分段器160最初生成二維陣列300。二維陣列300可以用來掃描像素圖140以得到已標記紅像素並存儲像素圖140上的已發現並標記的紅像素的坐標。陣列300的第一層(諸如層310)可以用來掃描過像素圖140的每行以搜索已標記紅像素。陣列300的第二層320可以用來存儲來自先前掃描的行的先前發現的已標記紅像素的坐標。在另一實施例中,還可以使用雙重連結列表來掃描像素圖並存儲來自像素圖的信息。 如本領域的普通技術人員能夠認識到的,除圖3中所描繪的那些之外和/或替代圖3中所描繪的那些,可以使用另外的掃描儀和管理器(organizer)來掃描並存儲附加信息。現在將參考圖4中的流程圖來解釋(圖1和3)的像素分段器160的操作。圖4是舉例說明根據本發明的實施例的、用於產生和擴展相鄰群組的方法的流程圖。在一個實施例中,像素分段器160可以檢查像素圖140以確定在像素圖140上是否存在任何未掃描行, 如在步驟401中那樣。如果步驟401的結果指示已經掃描了像素圖的每行,則像素分段器 160可以終止並前進至(圖1的)群組分類器170。如果尚未掃描每一行,則可以使用陣列的第一層310來臨時存儲在未掃描行的掃描期間發現的任何紅像素的坐標402。然後,陣列的第一層310可以確定在所述行中是否仍存在像素403。如果不存在, 則像素分段器160更新所有現有相鄰群組並前進至下一行413。如果在該行中仍存在像素, 則像素分段器160檢查該行中的每個像素,如在步驟404中那樣。像素分段器160檢查每個像素是否被標記為紅的,如在步驟405中那樣。如果未發現已標記紅像素,則像素分段器 160繼續進行以掃描行403中的其餘像素。如果發現了已標記紅像素,則像素分段器160將所發現的已標記紅像素的坐標存儲在陣列的第二層320中,如在步驟406中那樣。然後,像素分段器160可以將所發現的已標記紅像素的坐標與存儲在陣列的第二層320中的每個先前發現的已標記紅像素相比較,以確定先前發現的已標記紅像素的任何坐標是否具有來自先前行的匹配的相應y軸坐標,如在步驟407中那樣。如果發現匹配, 則像素分段器160將現有相鄰群組340擴展以圍繞當前發現的紅像素,如在步驟411中那樣。如果未發現匹配,則像素分段器160生成新的相鄰群組340,408,並進一步確定是否存在靠近當前發現的紅像素409的水平毗鄰的紅像素。如果不存在靠近當前發現的紅像素的
6水平毗鄰的紅像素,則像素分段器160繼續掃描該行以得到已標記紅像素,如在步驟403中那樣。如果發現一個或多個紅像素水平地鄰近於當前發現的已標記紅像素,則像素分段器 160將現有相鄰群組340擴展以圍繞當前發現的已標記紅像素以及與來自步驟410的所發現的已標記紅像素水平毗鄰的紅像素。然後,像素分段器160確定是否存在任何現有相鄰群組,諸如如在步驟412中那樣與擴展的相鄰群組340相連或與之重疊的先前行中的相鄰群組340。如果未發現相連或重疊的相鄰群組,則像素分段器繼續掃描行以得到已標記紅像素403。如果在先前行中發現相連或重疊的相鄰群組340,則已擴展的相鄰群組340被再次擴展以圍繞所有相連的已標記紅像素410。然後,像素分段器160繼續進行以掃描該行的其餘部分和像素圖的每行以得到已標記紅像素,並重複用於產生並擴展相鄰群組340的先前標準。如本領域的普通技術人員能夠認識到的,除圖3中所描繪的那些之外和/或替代圖3中所描繪的那些,可以在相鄰群組的產生和擴展時考慮另外的元素或因素。傳統方法包括了測試以確定非標準色空間中的複雜三維形狀內的候選像素的包含,而本發明已針對存儲器性能使操作的關鍵順序最優化。用像素圖上的單遍(single pass)來實現像素分段器160且像素分段器160產生更簡單且更快的比較操作。由於所提出的方法出於此目的使用更標準的色空間,所以現在可以採用先前存在的硬體加速算法來進行色彩轉換。另外,像素分段器160僅掃描圖像的上80%,因為實驗已顯示候選偽像很少出現在圖像的下20% 330中。上述實施例針對存儲器性能使操作最優化,並且不要求附加的處理時間或存儲器資源以掃描不必要的像素。結果,利用上述實施例對於本領域的普通技術人員來說將不是明顯或顯而易見的。在由像素分段器160掃描像素圖140的每行以得到已標記紅像素之後,群組分類器170檢查每個相鄰群組340並確定相鄰群組是否是數字圖像110中的紅眼,如圖1中所示(180)。群組分類器170對每個相鄰群組340運行稍後在本文中描述的一系列測試,並考慮相鄰群組;340的尺寸以及圍繞相鄰群組340的像素。現在將參考圖5的流程圖來解釋如圖1中所描繪的群組分類器170的操作,圖5 舉例說明了用於確定相鄰群組是否是紅眼的方法。在一個實施例中,該方法可以由系統 100來執行。在一個實施例中,群組分類器170可以首先檢查以確定是否存在任何相鄰群組340,如在步驟510中那樣。如果發現任何相鄰群組,則群組分類器170定義上和下閾值。 在一個實施例中,系統100的群組分類器170可以包括上閾值和下閾值的預編程值。在另一實施例中,可以由用戶來定義上和下閾值。如本領域的普通技術人員能夠認識到的,可以由除圖5中所描繪的那些之外和/或替代圖5中所描繪的那些的手段來定義上閾值和下閾值。然後,群組分類器170將相鄰群組340的尺寸與用戶定義的上閾值和用戶定義的下閾值相比較。在一個實施例中,群組分類器170可以將每個相鄰群組340的尺寸與上閾值相比較並確定相鄰群組340是否大於上閾值群組520。如果相鄰群組340的尺寸大於上閾值,則丟棄670相鄰群組340。如果相鄰群組340不大於,則群組分類器170隨後將相鄰群組340的尺寸與下閾值530相比較。如果相鄰群組340的尺寸小於下閾值,則丟棄670 相鄰群組340。
如果相鄰群組340的尺寸大於下界閾值且小於上界閾值,則群組分類器170將相鄰群組340的已標記紅像素與圍繞相鄰群組340的像素相比較,如在步驟MO中那樣。然後,群組分類器170確定圍繞相鄰群組340的像素是否具有通常表示眼睛的色彩,如在步驟 550中那樣。如果像素色彩是正確的,則相鄰群組340被標記為紅眼560。如本領域的普通技術人員能夠認識到的,除圖5中所描繪的那些之外和/或替代圖5中所描繪的那些,群組分類器170可以在確定相鄰群組340是否是數字圖像110中的紅眼時考慮另外的因素和元
ο現在將參考圖6中的流程圖來解釋如圖1中所描繪的系統100的操作,圖6舉例說明了根據本發明的實施例的用於檢測紅眼的高級方法。在一個實施例中,該方法可以由系統100來執行。在圖6的實施例中,由系統100來生成像素圖140,如在步驟610中那樣。 然後,系統100掃描像素圖140並標記每個發現的紅像素,如在步驟620中那樣。另外,系統100可以由具有毗鄰坐標的像素產生相鄰群組340,如在步驟630中那樣。接下來,系統 100隨後可以確定每個相鄰群組340是否是紅眼偽像,如在步驟640中那樣。系統100隨後可以產生表示數字圖像上的紅眼偽像的坐標的列表,如在步驟650中那樣。如上所述,由系統100來訪問圖1中所示的數字圖像110。可以將數字圖像110本地地存儲在設備、裝置中或連接到該設備或裝置的存儲介質上或通過網絡存儲在設備、裝置中或連接到該設備或裝置的存儲介質上。在一個實施例中,可以通過連接到印表機的通用存儲設備來存儲和訪問數字圖像。在另一實施例中,可以將數字圖像110存儲在伺服器上或由系統100通過網絡可以訪問的另一計算機上。如本領域的普通技術人員能夠認識到的,除圖1中所描繪的那些之外和/或替代圖1中所描繪的那些,可以將系統100所訪問的數字圖像110存儲在另外的本地或聯網位置。此外,如上所述,圖1中所示的數字採樣器120接收數字圖像110並產生下採樣數字圖像130。數字採樣器是可以降低或增加原始數字圖像110的解析度的數字縮放器 (scaler)。在一個實施例中,數字採樣器120可以接收數字圖像110並對數字圖像110進行向下採樣以產生下採樣數字圖像130。在另一實施例中,數字採樣器120可以接收數字圖像並對數字圖像進行向上採樣且產生其中已識別紅眼的數字圖像180。如本領域的普通技術人員能夠認識到的,除圖1中所描繪的那些之外和/或替代圖1中所描繪的那些,數字採樣器120可以對附加圖像或數據進行採樣。如圖1中所示,然後由像素消除器150產生並訪問下採樣數字圖像130的像素圖 140。在一個實施例中,像素圖140是下採樣數字圖像130上的每個像素的二維圖。在另一實施例中,像素圖140可以是三維圖像上的每個像素的三維圖。如本領域的普通技術人員能夠認識到的,除圖1中所描繪的那些之外和/或替代圖1中所描繪的那些,像素圖140可以具有不同的尺度以表示數字圖像110。圖7舉例說明了可以獨立地或相互結合地使用所述系統100的各種裝置和設備、 印表機710、數位照相機720、計算機730、伺服器740和存儲介質750。在一個實施例中,系統100可以在諸如印表機710、數位照相機720或計算機系統730之類的單個設備或裝置上獨立地使用。在另一實施例中,可以將系統100與多個裝置或設備相結合地使用,諸如通過連接到印表機710的數位照相機720、連接到印表機710的計算機730或連接到計算機730 的數位照相機720,其被連接到印表機710。如本領域的普通技術人員能夠認識到的,除圖7中所描繪的那些之外和/或替代圖7中所描繪的那些,不同的裝置或設備可以獨立地或相互結合地使用該系統。 如圖7中所示,可以將系統100嵌入設備或裝置的硬體上,諸如在印表機710、數位照相機720或計算機730的非易失性存儲器上。另外,可以將系統100本地地存儲在計算機730或存儲介質750上並被計算機730或連接到計算機730或存儲介質750的其它設備或裝置訪問。此外,可以通過網絡740來存儲或訪問系統100。在一個實施例中,可以將網絡740連接到全球資訊網且可以由一個或多個計算機730、印表機710或數位照相機720進行訪問,其可以通過網絡來利用系統100。本發明允許較大範圍的設備和裝置包括紅眼檢測作為特徵。如本領域的普通技術人員能夠認識到的,除圖1中所描繪的那些之外和/或替代圖 1中所描繪的那些,可以在不同的裝置或設備中存儲和訪問該系統。
權利要求
1.一種方法,包括生成數字圖像的像素圖;掃描像素圖並標記所發現的紅像素;其中,掃描像素圖的每行以得到紅像素;其中,每個已標記紅像素的坐標被存儲並與周圍的紅像素相比較;安排所發現的已標記紅像素與先前發現的毗鄰的已標記紅像素從而產生相鄰群組;確定該相鄰群組是否是紅眼偽像;以及產生表示數字圖像內的紅眼偽像的坐標的列表。
2.權利要求1的方法,還包括將每個已標記紅像素的坐標存儲在陣列中。
3.權利要求2的方法,其中,所述陣列是二維陣列。
4.權利要求3的方法,其中,所述陣列的第一層存儲像素圖的當前行中的紅像素的坐標,並且其中,所述陣列的第二層存儲先前掃描的行中的已發現紅像素的先前坐標。
5.權利要求4的方法,其中,將所述陣列的第一層上的所發現的已標記紅像素的坐標與所述陣列的第二層上的所發現的已標記紅像素的坐標相比較,以確定是否所發現的已標記紅像素和先前發現的已標記紅像素具有匹配的相應y軸坐標且先前發現的像素存在於先前行上。
6.權利要求1的方法,其中,可以由雙重連結列表來執行像素圖上的所發現的已標記紅像素的掃描和存儲。
7.權利要求5的方法,其中,如果所發現的已標記紅像素具有與來自先前行的先前發現的已標記紅像素匹配的相應y軸坐標且尚不存在相鄰群組,則產生新的相鄰群組。
8.權利要求7的方法,其中,現有相鄰群組被擴展以圍繞所有毗鄰的所發現的已標記紅像素和先前發現的已標記紅像素。
9.一種用於確定紅眼的存在的系統,包括 數字採樣器;其中,由所述數字採樣器對數字圖像進行向下採樣; 像素圖;其中,所述像素圖是數字圖像的二維圖; 像素消除器; 像素分段器;其中,所述像素分段器使用二維陣列一次掃過數據;以及群組分類器,其檢查紅像素的相鄰群組以確定是否存在紅眼條件。
10.權利要求9的系統,其中,所述群組分類器放棄在用戶針對紅眼定義的邊界之外的非紅眼相鄰群組。
11.權利要求10的系統,其中,所述群組分類器將來自相鄰群組的像素與圍繞像素群組的像素相比較,以確定相鄰群組是否是紅眼。
12.一種用於確定紅眼的存在的方法,包括掃描像素圖並採用紅色計算來測量每個像素的紅色水平; 其中,在一個或多個階段中完成紅色計算;其中,在每個階段中將每個像素的紅色水平與定義的紅色閾值相比較;標記每個發現的紅像素並將相應的坐標存儲在像素圖上;安排所發現的已標記紅像素與具有相應y軸坐標的先前發現的已標記紅像素,從而產生相鄰群組;確定該相鄰群組是否是紅眼偽像;以及產生表示數字圖像內的紅眼偽像的坐標的列表。
13.權利要求12的方法,其中,由整數算法來執行所述紅色計算,且所述紅色計算要求至多一次除運算。
14.權利要求13的方法,其中,具有在紅色閾值之上的紅色水平的當前像素被標記為紅的。
15.權利要求12的方法,其中,所述紅色計算可以使用RGB或CieLab分量。
全文摘要
一種方法包括生成數字圖像的像素圖,掃描像素圖並標記所發現的紅像素,其中,掃描像素圖的每行以得到紅像素,其中,每個已標記紅像素的坐標被存儲並與周圍的紅像素相比較,安排所發現的已標記紅像素與先前發現的具有相應y軸坐標的已標記紅像素從而產生相鄰群組,確定該相鄰群組是否是紅眼偽像,並產生表示數字圖像內的紅眼偽像的坐標的列表。
文檔編號G06T7/00GK102171723SQ200880131372
公開日2011年8月31日 申請日期2008年8月1日 優先權日2008年8月1日
發明者J·德奧納賴恩, M·高巴茨 申請人:惠普開發有限公司