專利名稱:圖像處理設(shè)備、方法和存儲有程序的存儲介質(zhì)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種圖像處理裝置、方法以及存儲程序的存儲介質(zhì),具體地,本發(fā)明涉及一種配有圖像處理部的圖像處理裝置,所述圖像處理部被構(gòu)造為包括從多種類型的圖像處理模塊中選擇的一個或更多個圖像處理模塊,并且本發(fā)明涉及一種可被應(yīng)用于所述圖像處理裝置的圖像處理方法,并涉及一種存儲用于使計算機用作圖像處理裝置的圖像處理程序的存儲介質(zhì)。
背景技術(shù):
在圖像處理裝置、桌面印刷(DTP)系統(tǒng)、打印系統(tǒng)等上對輸入的圖像數(shù)據(jù)執(zhí)行各種類型的圖像處理,諸如放大/縮小、旋轉(zhuǎn)、仿射變換(affine transformation)、色彩轉(zhuǎn)換、濾波處理、圖像合成等。在這樣的裝置和系統(tǒng)中,當輸入的圖像數(shù)據(jù)或內(nèi)容的屬性、過程、參數(shù)等固定時,圖像處理由設(shè)計為專用于該圖像處理的硬件來執(zhí)行。但是,當屬性變化多樣時或者當輸入具有不同的色彩空間或不同的每像素比特數(shù)的各種圖像數(shù)據(jù)作為輸入的圖像數(shù)據(jù)時,需要靈活地改變圖像處理的結(jié)構(gòu)。為了滿足這種需求,存在一些這樣的技術(shù),在這些技術(shù)中,多個可編程處理模塊以管線(pipeline)形式或有向無環(huán)圖(DAG)形式連接。
但是,存在著以下問題。在各圖像處理模塊,根據(jù)圖像處理的類型和內(nèi)容,存在容易處理的單位(例如,像素為單位、一行為單位、多行為單位、一整幅圖像為單位等)。為了將各圖像處理模塊以任意順序進行組合并且彼此合作執(zhí)行處理,所有圖像處理模塊的輸出的單位必須一致,或者說,必須構(gòu)建各圖像處理模塊。因此,圖像處理模塊的結(jié)構(gòu)變得復(fù)雜。此外,由于各圖像處理模塊與其它圖像處理模塊協(xié)同工作,所以除了對輸入的圖像數(shù)據(jù)實際執(zhí)行圖像處理的部分外,各圖像處理模塊還需要控制從與該模塊自身相連接的其它圖像處理模塊接收圖像數(shù)據(jù)和向所述其它圖像處理模塊發(fā)送圖像數(shù)據(jù)的處理的部分。因此,各圖像處理模塊的結(jié)構(gòu)變得更加復(fù)雜。
而且,各緩沖存儲器被構(gòu)建為保持與其前后連接的圖像處理模塊的處理內(nèi)容相對應(yīng)的區(qū)域,并且僅僅用于保持處理的中間進展。因此,當給定的圖像處理模塊被改變時,需要根據(jù)該圖像處理模塊的處理內(nèi)容以及位于緩沖存儲器之前和之后的圖像處理模塊的處理內(nèi)容等來改變性能。
發(fā)明內(nèi)容
本發(fā)明涉及一種圖像處理設(shè)備、方法以及存儲有程序的存儲介質(zhì)。根據(jù)本發(fā)明的一方面,圖像處理設(shè)備具有圖像處理部和處理管理部。該圖像處理部具有一個或更多個圖像處理模塊和一個或更多個緩沖器模塊。每一個圖像處理模塊都具有圖像處理引擎和控制部。圖像處理引擎以單位處理數(shù)據(jù)量為單位對圖像數(shù)據(jù)進行預(yù)定的圖像處理??刂撇恳运鰣D像處理引擎以所述單位處理數(shù)據(jù)量為單位進行處理所需的數(shù)據(jù)量單位,來輸入從其自身模塊的前級獲取的圖像數(shù)據(jù)。另外,所述控制部將由所述圖像處理引擎進行了預(yù)定圖像處理的圖像數(shù)據(jù),或者該預(yù)定圖像處理的處理結(jié)果輸出給其自身模塊的后級。
將基于以下附圖而詳細描述本發(fā)明的實施例,在附圖中圖1是示出了與實施例相關(guān)的計算機(圖像處理裝置)的示例性結(jié)構(gòu)的框圖;圖2A是示出了由資源管理部執(zhí)行的初始化處理的內(nèi)容的流程圖;圖2B是示出了由資源管理部執(zhí)行的、第三管理方法中對內(nèi)存保留請求的處理的內(nèi)容的流程圖;圖2C是示出了由資源管理部執(zhí)行的、第三管理方法中對內(nèi)存釋放請求的處理的內(nèi)容的流程圖;
圖2D是示出了由資源管理部執(zhí)行的對資源保留請求的處理的內(nèi)容的流程圖;圖2E是示出了由資源管理部執(zhí)行的對資源釋放請求的處理的內(nèi)容的流程圖;圖3是解釋應(yīng)用程序的處理的序列圖;圖4A是示出了由模塊生成部執(zhí)行的模塊生成處理的內(nèi)容的流程圖,圖4B是解釋工作流管理部的表的示意圖;圖5A至5C是示出了圖像處理部的結(jié)構(gòu)示例的框圖;圖6是示出了由緩沖器模塊的緩沖器控制部執(zhí)行的緩沖器控制處理的內(nèi)容的流程圖;圖7是示出了由緩沖器模塊的緩沖器控制部執(zhí)行的請求接收中斷處理的內(nèi)容的流程圖;圖8是示出了由緩沖器模塊的緩沖器控制部執(zhí)行的數(shù)據(jù)寫入處理的內(nèi)容的流程圖;圖9A至9C是解釋在作為寫入對象的圖像數(shù)據(jù)跨越多個用于存儲的單位緩沖區(qū)的情況下的處理的示意圖;圖10是示出了由緩沖器模塊的緩沖器控制部執(zhí)行的數(shù)據(jù)讀取處理的內(nèi)容的流程圖;圖11A至11C是解釋在作為讀取對象的圖像數(shù)據(jù)跨越多個用于存儲的單位緩沖區(qū)的情況下的處理的示意圖;圖12是示出了由圖像處理模塊的控制部執(zhí)行的圖像處理模塊初始化處理的內(nèi)容的流程圖;圖13是示出了由圖像處理模塊的控制部執(zhí)行的圖像處理模塊控制處理的內(nèi)容的流程圖;圖14是示出了由圖像處理模塊的控制部執(zhí)行的自身模塊刪除處理的內(nèi)容的流程圖;圖15A是示出了圖像處理模塊的示意性結(jié)構(gòu)以及在圖像處理模塊處執(zhí)行的處理的框圖,并且圖15B是示出了緩沖器模塊的示意性結(jié)構(gòu)以及在緩沖器模塊處執(zhí)行的處理的框圖;
圖16A至16D是示出了由處理管理部執(zhí)行的塊單位控制處理的內(nèi)容的流程圖;圖17A至17D是示出了由處理管理部執(zhí)行的整幅圖像控制處理的內(nèi)容的流程圖;圖18是解釋塊單位處理和整幅圖像處理的流程的示意圖;圖19是示出了由處理管理部執(zhí)行的錯誤發(fā)生中斷處理的內(nèi)容的流程圖;和圖20是解釋在緩沖器模塊直接從前面的圖像處理模塊請求圖像數(shù)據(jù)的情況下的塊單位處理的流程的示意圖。
具體實施例方式
在下文中,將參照附圖詳細描述本發(fā)明的實施例的示例。圖1示出了作為圖像處理裝置的計算機10。可將該計算機10并入到必須在其內(nèi)部執(zhí)行圖像處理的任意圖像處理裝置,諸如復(fù)印機、打印機、傳真機、具有前述設(shè)備的功能的多功能設(shè)備、掃描儀、照片打印機等。此外,計算機10可以是獨立的計算機,諸如個人計算機(PC)等。此外,計算機10可以是并入到便攜式裝置(諸如PDA(個人數(shù)字助理)、蜂窩電話等)中的計算機。
計算機10具有CPU 12、內(nèi)存14、顯示器16、操作部18、存儲器20、圖像數(shù)據(jù)供應(yīng)部22和圖像輸出部24,它們通過總線26連接到一起。在將計算機10并入到如上述的那些圖像處理裝置的情況下,計算機10可包括分別設(shè)置在該圖像處理裝置上的由LCD等構(gòu)成的顯示面板、數(shù)字鍵等(作為顯示器16和操作部18)。此外,如果計算機10是獨立的計算機,則顯示器16可以是顯示器,操作部18可以是鍵盤、鼠標等,它們連接到計算機。而且,硬盤驅(qū)動器(HDD)適合作為存儲器20,但是代替地,可使用其他的非易失性存儲介質(zhì),諸如閃存等。
圖像數(shù)據(jù)供應(yīng)部22提供作為處理對象的圖像數(shù)據(jù)。例如,可將用于讀取記錄在記錄材料(諸如紙或照相膠卷等)上的圖像并輸出圖像數(shù)據(jù)的圖像讀取部、或通過通信線路從外部接收圖像數(shù)據(jù)的接收部、或存儲圖像數(shù)據(jù)的圖像存儲部(內(nèi)存14或存儲器20)等用作圖像數(shù)據(jù)供應(yīng)部22。此外,圖像輸出部24輸出經(jīng)過了圖像處理的圖像數(shù)據(jù)或由這樣的圖像數(shù)據(jù)表示的圖像。例如,可將用于將由圖像數(shù)據(jù)表示的圖像記錄到記錄材料(諸如紙或感光材料等)上的圖像記錄部、或者將由圖像數(shù)據(jù)表示的圖像顯示到顯示器等上的顯示部、或者將圖像數(shù)據(jù)寫到記錄介質(zhì)的寫入裝置、或者通過通信線路發(fā)送圖像數(shù)據(jù)的發(fā)送部用作圖像輸出部24。此外,圖像輸出部24可以是僅存儲經(jīng)過了圖像處理的圖像數(shù)據(jù)的圖像存儲部(內(nèi)存14或存儲器20)。
如圖1所示,存儲器20存儲由CPU 12執(zhí)行的各種程序操作系統(tǒng)30的程序,其控制對資源(諸如內(nèi)存14等)的管理、對CPU 12執(zhí)行程序的管理、計算機10和外部之間的通信等;圖像處理程序組34,其使計算機10用作本發(fā)明涉及的圖像處理裝置;和各種類型的應(yīng)用(application)32的程序(在圖1中示為“應(yīng)用程序組32”),其使得由CPU 12執(zhí)行前述圖像處理程序組實現(xiàn)的圖像處理裝置執(zhí)行期望的圖像處理。
出于減輕開發(fā)可被用于各種類型的圖像處理裝置和便攜式裝置、PC等中的圖像處理程序的開發(fā)負擔的目的,圖像處理程序組34是這樣的程序,將其開發(fā)為能夠在前述各種類型的圖像處理裝置和諸如便攜式裝置、PC等的各種裝置(平臺)中通用。圖像處理程序組34對應(yīng)于本發(fā)明涉及的圖像處理程序。由圖像處理程序組34實現(xiàn)的圖像處理裝置構(gòu)建執(zhí)行圖像處理的圖像處理部,并且基于來自應(yīng)用32的指令由所述圖像處理部(將在后面描述細節(jié))執(zhí)行圖像處理。圖像處理程序組34為應(yīng)用32提供用于指示圖像處理部的構(gòu)建的接口,該接口還用于指示由所構(gòu)建的圖像處理部執(zhí)行圖像處理。因此,當在內(nèi)部執(zhí)行圖像處理的任意裝置是新開發(fā)的裝置時,僅開發(fā)應(yīng)用32就可獲得執(zhí)行圖像處理的程序。通過使用所述接口,應(yīng)用32使圖像處理程序組34執(zhí)行該裝置所需的圖像處理。由于不再需要新開發(fā)實際執(zhí)行圖像處理的程序,所以可減輕開發(fā)負擔。
如上所述,由圖像處理程序組34實現(xiàn)的圖像處理裝置構(gòu)建執(zhí)行由應(yīng)用32指示的圖像處理的圖像處理部,并且由構(gòu)建的圖像處理部執(zhí)行圖像處理。因此,即使在例如作為圖像處理的對象的圖像數(shù)據(jù)的色彩空間或每像素比特數(shù)不固定或者內(nèi)容、過程、參數(shù)由于應(yīng)用32指示重建圖像處理部而不固定的情況下,也可根據(jù)處理的圖像數(shù)據(jù)等靈活地改變由圖像處理裝置(圖像處理部)執(zhí)行的圖像處理。
在下文中將描述圖像處理程序組34。如圖1所示,圖像處理程序組34被寬泛地分為模塊庫36、對應(yīng)于構(gòu)建部的處理構(gòu)建部42的程序、以及處理管理部46的程序。處理構(gòu)建部42基于來自應(yīng)用的指令構(gòu)建圖像處理部50。如圖5所示,圖像處理部50由一個或更多個圖像處理模塊38和緩沖器模塊40構(gòu)成。它們以管線形式或有向無環(huán)圖(DAG)形式連接在一起。圖像處理模塊38執(zhí)行圖像處理。緩沖器模塊40存儲圖像數(shù)據(jù),緩沖器模塊40布置在各圖像處理模塊38的前一級和后一級中的至少一級。
構(gòu)成圖像處理部50的各圖像處理模塊自身是由CPU 12執(zhí)行的第一程序或由CPU 12執(zhí)行的第二程序,所述第一程序用于使CPU 12執(zhí)行預(yù)定的圖像處理,所述第二程序用于指示執(zhí)行針對未在圖1中示出的外部圖像處理裝置(例如專用圖像處理卡等)的處理。圖像處理模塊38的分別執(zhí)行不同的圖像處理(例如,輸入處理、濾波處理(filter processing)、色彩轉(zhuǎn)換處理、放大/縮小處理、斜交角檢測處理、圖像旋轉(zhuǎn)處理、圖像合成處理、輸出處理等)的多種程序分別登記在模塊庫36中。在下文中,為了簡化解釋,將給出構(gòu)成圖像處理部50的各單獨的圖像處理模塊自身為前述第一程序的情況的描述。
如圖15A所示,各圖像處理模塊38由圖像處理引擎38A和控制部38B構(gòu)成。圖像處理引擎38A每預(yù)定單位處理數(shù)據(jù)量地對圖像數(shù)據(jù)執(zhí)行圖像處理??刂撇?8B執(zhí)行與位于該圖像處理模塊38的前一級和后一級的模塊的圖像數(shù)據(jù)的輸入和輸出,并控制圖像處理引擎38A。根據(jù)圖像處理引擎38A執(zhí)行的圖像處理的類型等,從任意數(shù)量的字節(jié)(諸如圖像的一行、圖像的多行、圖像的一個像素、一幅圖像(整幅圖像)等)中預(yù)先選擇并設(shè)置各圖像處理模塊38的單位處理數(shù)據(jù)量。例如,在執(zhí)行色彩轉(zhuǎn)換處理和濾色處理的圖像處理模塊38中,單位處理數(shù)據(jù)量是一個像素。在執(zhí)行放大/縮小處理的圖像處理模塊38中,單位處理數(shù)據(jù)量是圖像的一行或圖像的多行。在執(zhí)行圖像旋轉(zhuǎn)處理的圖像處理模塊38中,單位處理數(shù)據(jù)量是圖像的一整幅圖像。在執(zhí)行圖像壓縮/解壓縮處理的圖像處理模塊38中,單位處理數(shù)據(jù)量是N個字節(jié),其取決于執(zhí)行環(huán)境。
在其中圖像處理的類型相同但是所執(zhí)行的圖像處理的內(nèi)容不同的圖像處理模塊38也被登記在模塊庫36中。(在圖1中,這些類型的圖像處理模塊被標示為“模塊1”和“模塊2”)。例如,對于執(zhí)行放大/縮小處理的圖像處理模塊38,存在多個圖像處理模塊38,諸如通過將每隔一個像素去掉而將輸入的圖像數(shù)據(jù)縮小50%的執(zhí)行縮小處理的圖像處理模塊38以及按照為輸入的圖像數(shù)據(jù)指定的放大/縮小率執(zhí)行放大/縮小處理的圖像處理模塊38等。此外,例如,對于執(zhí)行色彩轉(zhuǎn)換處理的圖像處理模塊38,存在將RGB色彩空間轉(zhuǎn)換成CMY色彩空間的圖像處理模塊38、以相反方式進行轉(zhuǎn)換的圖像處理模塊38和執(zhí)行另一色彩空間轉(zhuǎn)換(諸如L*a*b*空間等)的圖像處理模塊38等。
為了輸入所需的圖像數(shù)據(jù)量以在圖像處理引擎38處執(zhí)行處理,控制部38B從其自身模塊(當前模塊)的前一模塊(例如緩沖器模塊40)以單位讀取數(shù)據(jù)量為單位獲取圖像數(shù)據(jù),并將從圖像處理引擎38A輸出的圖像數(shù)據(jù)以單位寫入數(shù)據(jù)量為單位輸出到后一模塊(例如緩沖器模塊40)。
如果在圖像處理引擎38A中不執(zhí)行涉及數(shù)據(jù)量增加或減少的圖像處理(諸如壓縮等),則單位寫入數(shù)據(jù)量等于單位處理數(shù)據(jù)量?;蛘?,控制部38B執(zhí)行將由圖像處理引擎38A進行的圖像處理的結(jié)果輸出到其自身模塊的外部的處理(例如,如果圖像處理引擎38A執(zhí)行圖像分析處理(諸如斜交角檢測處理等),則可輸出圖像分析處理的結(jié)果(諸如檢測斜交角的結(jié)果等)取代圖像數(shù)據(jù))。在其中圖像處理引擎38A所執(zhí)行的圖像處理的類型和內(nèi)容相同但是前述單位處理數(shù)據(jù)量或單位讀取數(shù)據(jù)量或單位寫入數(shù)據(jù)量不同的圖像處理模塊38也登記在模塊庫36中。例如,雖然先前提到執(zhí)行圖像旋轉(zhuǎn)處理的圖像處理模塊38的單位處理數(shù)據(jù)量是一整幅圖像,但是在模塊庫36中也可包括執(zhí)行相同的圖像旋轉(zhuǎn)處理而其單位處理數(shù)據(jù)量為圖像的一行或圖像的多行的圖像處理模塊38。
在模塊庫36中登記的各圖像處理模塊38的程序由對應(yīng)于圖像處理引擎38A的程序和對應(yīng)于控制部38B的程序構(gòu)成。對應(yīng)于控制部38B的程序被制成部件(part)。不管在圖像處理引擎38A執(zhí)行的圖像處理的類型和內(nèi)容如何,在多個單獨的圖像處理模塊38之中,對于單位讀取數(shù)據(jù)量和單位寫入數(shù)據(jù)量相同的圖像處理模塊38,對應(yīng)于控制部38B的程序是通用的(相同的程序被用作對應(yīng)于控制部38B的程序)。這樣,減少了開發(fā)圖像處理模塊38的程序的開發(fā)負擔。
在多個圖像處理模塊38之中,存在這樣的圖像處理模塊,輸入的圖像的屬性未知,單位讀取數(shù)據(jù)量和單位寫入數(shù)據(jù)量不固定,并且獲得了輸入圖像數(shù)據(jù)的屬性,通過執(zhí)行將獲得的屬性帶入預(yù)定的算術(shù)運算公式的算術(shù)運算,而固定單位讀取數(shù)據(jù)量和單位寫入數(shù)據(jù)量。
對于此類型的圖像處理模塊38,滿足使用相同的算術(shù)運算公式推導單位讀取數(shù)據(jù)量和單位寫入數(shù)據(jù)量的圖像處理模塊38通用對應(yīng)于控制部38B的程序。
此外,圖像處理程序組34可以實現(xiàn)在如上所述的各種類型的裝置中。在圖像處理程序組34之中,登記在模塊庫36中的圖像處理模塊38的數(shù)量和類型等當然可根據(jù)其中實現(xiàn)有圖像處理程序組34的裝置所要求的圖像處理而適當添加、刪除、替換等。
如圖15B所示,構(gòu)成圖像處理部50的各緩沖器模塊40由緩沖器40A和緩沖器控制部40B構(gòu)成。緩沖器40A由內(nèi)存區(qū)構(gòu)成,該內(nèi)存區(qū)通過操作系統(tǒng)30從計算機10設(shè)置的內(nèi)存14中保留(reserve)。緩沖器控制部40B執(zhí)行與位于該緩沖器模塊40的前一級和后一級的模塊的圖像數(shù)據(jù)的輸入和輸出,并且對緩沖器40A進行管理。各緩沖器模塊40的緩沖器控制部40B自身也是由CPU 12執(zhí)行的程序,緩沖器控制部40B的程序也登記在模塊庫36中(在圖1中,緩沖器控制部40B的程序被標示為“緩沖器模塊”)。
構(gòu)建由應(yīng)用32指示的圖像處理部50的處理構(gòu)建部42由如圖1所示的多種類型的模塊生成部44構(gòu)成。該多種類型的模塊生成部44對應(yīng)于彼此不同的圖像處理,并且通過由應(yīng)用32啟動而執(zhí)行從圖像處理模塊38和緩沖器模塊40中生成用于實現(xiàn)對應(yīng)的圖像處理的模塊組的處理。
圖1示出了與登記在模塊庫36中的單獨的圖像處理模塊38執(zhí)行的圖像處理的類型相對應(yīng)的模塊生成部44,作為模塊生成部44的示例。對應(yīng)于單獨的模塊生成部44的圖像處理可以是由多種類型的圖像處理模塊38實現(xiàn)的圖像處理(例如,由斜交角檢測處理和圖像旋轉(zhuǎn)處理構(gòu)成的偏斜校正處理)。在所需的圖像處理是組合了多種類型的圖像處理的處理的情況下,應(yīng)用32順序啟動對應(yīng)于所述多種類型的圖像處理的某一種的模塊生成部44。這樣,執(zhí)行所需圖像處理的圖像處理部50由應(yīng)用32順序啟動的模塊生成部44構(gòu)建。
如圖1所示,處理管理部46包括工作流管理部46A,其控制圖像處理部50對圖像處理的執(zhí)行;資源管理部46B,其管理計算機10的內(nèi)存14和資源的使用;和錯誤管理部46C,其管理圖像處理部50處出現(xiàn)的錯誤。圖像處理部50工作而并行地執(zhí)行圖像處理,同時以小于一整幅圖像的數(shù)據(jù)量為單位將圖像數(shù)據(jù)發(fā)送到后一級(這被稱為塊單位處理)。此外,部50這樣工作,在前一圖像處理模塊38完成了對一整幅圖像的圖像數(shù)據(jù)的圖像處理后,后一圖像處理模塊38才執(zhí)行對該一整幅圖像的圖像數(shù)據(jù)的圖像處理(這被稱為整幅圖像處理)。作為工作流管理部46A的程序,存在使圖像處理部50執(zhí)行塊單位處理的程序,以及使圖像處理部50執(zhí)行整幅圖像處理的程序。
接下來將描述本實施例的操作。當打開計算機10的電源時,資源管理部46B啟動,資源管理部46B如圖2A所示執(zhí)行初始化處理。
在本實施例中,有三種類型的管理方法作為資源管理部46B管理內(nèi)存的方法,可選擇和設(shè)置由這些管理方法中的哪個來執(zhí)行內(nèi)存管理。第一個是第一管理方法,每次有來自圖像處理部50的單獨模塊的請求時,該方法通過操作系統(tǒng)30從內(nèi)存14中保留分配給作為請求源的模塊的內(nèi)存區(qū)。第二個是第二管理方法,該方法通過操作系統(tǒng)30預(yù)先從內(nèi)存14中保留給定大小的內(nèi)存區(qū),當有來自單獨模塊的請求時將預(yù)先保留的所述內(nèi)存區(qū)的部分區(qū)域分配給作為請求源的模塊。第三個是第三管理方法,該方法通過操作系統(tǒng)30預(yù)先從內(nèi)存14中保留給定大小的內(nèi)存區(qū),當有來自單獨模塊的請求時,如果請求的內(nèi)存區(qū)的大小小于閾值,則將預(yù)先保留的所述內(nèi)存區(qū)的部分區(qū)域分配給作為請求源的模塊,如果請求的內(nèi)存區(qū)的大小大于或等于閾值,則通過操作系統(tǒng)保留分配給作為請求源的模塊的內(nèi)存區(qū)。應(yīng)該注意,本發(fā)明不限于此,也可以使用其它的內(nèi)存管理方法。
例如,如下地選擇這些管理方法。第一管理方法尤其適合于這些情況諸如該方法被沒有內(nèi)存限制等的應(yīng)用程序使用或者期望抑制由于復(fù)雜的內(nèi)存管理而引起的程序大小的增加等。此外,第二管理方法適合于這種情況根據(jù)本發(fā)明執(zhí)行圖像處理的整個應(yīng)用可使用的內(nèi)存量有限,并且需要在此范圍內(nèi)工作。另一方面,第三管理方法適合于這種情況必須使保留和釋放存儲器所需的處理時間為高速,這是因為在保留和釋放短期內(nèi)存區(qū)時使用操作系統(tǒng)30的內(nèi)存保留/釋放功能會增加開銷。
在圖2A所示的初始化處理的步驟100中,判斷選擇并設(shè)定的內(nèi)存管理方法是否是第二管理方法或第三管理方法。在將圖像處理程序組34實現(xiàn)到計算機10之中時可選擇并設(shè)定內(nèi)存管理方法。或者,資源管理部46B可獲得計算機10的系統(tǒng)環(huán)境(例如,內(nèi)存14的大小、或其中實現(xiàn)有圖像處理程序組34的裝置的類型等),可基于獲得的系統(tǒng)環(huán)境自動選擇并設(shè)置內(nèi)存管理方法。如果內(nèi)存管理方法是第一管理方法,則前述判斷結(jié)果是否定的,初始化處理結(jié)束。但是如果該判斷結(jié)果是肯定的,則程序繼續(xù)運行到步驟102,在步驟102,通過操作系統(tǒng)30從設(shè)置在計算機10上的內(nèi)存14中保留預(yù)定大小的內(nèi)存區(qū)(連續(xù)的區(qū)域),程序結(jié)束。同樣可根據(jù)系統(tǒng)環(huán)境等選擇并設(shè)置前述的預(yù)定大小。
這里,如果內(nèi)存管理方法是第一管理方法,則響應(yīng)于其后生成的內(nèi)存保留請求,保留通過操作系統(tǒng)30請求的內(nèi)存區(qū),類似地,響應(yīng)于內(nèi)存釋放請求,通過操作系統(tǒng)釋放該內(nèi)存區(qū)。由于這些處理與通常的程序中使用的處理類似,所以省略對其的解釋。
如果內(nèi)存管理方法是第二管理方法,則響應(yīng)于其后生成的內(nèi)存保留請求,從在先前步驟102中預(yù)先保留的內(nèi)存區(qū)中狀態(tài)為“未使用”的未使用區(qū)中搜索并保留對應(yīng)于該請求的大小的內(nèi)存區(qū)。將保留的內(nèi)存區(qū)的狀態(tài)改成“已使用”,并將保留的內(nèi)存區(qū)傳遞給請求源。對于內(nèi)存釋放請求,被請求釋放的內(nèi)存區(qū)被并入預(yù)先保留的內(nèi)存區(qū)的未使用區(qū),執(zhí)行處理將并入的內(nèi)存區(qū)的狀態(tài)從“已使用”改為“未使用”。例如,通過表或鏈表等,可管理表示內(nèi)存區(qū)的狀態(tài)是未使用還是已使用的信息。
接下來,將描述第三管理方法。當生成了內(nèi)存保留請求時,資源管理部46B執(zhí)行如圖2B所示的針對內(nèi)存保留請求的處理。在對內(nèi)存保留請求的處理中,在步驟104中,判斷請求的大小是否小于或等于預(yù)先設(shè)置的閾值。如果請求的大小不小于也不等于該閾值,則在步驟106中,以與第一管理方法相同的方式,通過操作系統(tǒng)30保留請求的大小的內(nèi)存區(qū),在步驟108中,將保留的內(nèi)存區(qū)的頭地址登記在資源管理部46B的表中??墒褂昧硪环绞?諸如列表或關(guān)聯(lián)數(shù)組等)代替表。如果在步驟104中判斷出請求的大小小于或等于閾值,則以與第二管理方法相同的方式,從在先前的步驟102中預(yù)先保留的內(nèi)存區(qū)的未使用區(qū)中保留請求的大小的內(nèi)存區(qū)(步驟110),將保留區(qū)的狀態(tài)改為“已使用”(步驟112)。然后,在步驟114中,保留的內(nèi)存區(qū)被傳遞給請求源。
此外,在第三管理方法中,當生成了內(nèi)存釋放請求時,資源管理部46B執(zhí)行如圖2C所示的對內(nèi)存釋放請求的處理。在對內(nèi)存釋放請求的處理中,在步驟116中,判斷在前述表中是否登記有被請求釋放的內(nèi)存區(qū)的頭地址。如果步驟116中的判斷結(jié)果是肯定的,則被請求釋放的內(nèi)存區(qū)是通過操作系統(tǒng)30保留的內(nèi)存區(qū)。因此,在步驟118中,通過操作系統(tǒng)30釋放被請求釋放的內(nèi)存區(qū),在下一步驟120中,從前述表中刪除所請求釋放的內(nèi)存區(qū)的頭地址。此外,如果步驟116中的判斷結(jié)果是否定的,則請求釋放的內(nèi)存區(qū)是從在先前的步驟102中預(yù)先保留的內(nèi)存區(qū)中保留的內(nèi)存區(qū)。因此,在步驟122中將被請求釋放的內(nèi)存區(qū)并入先前保留的內(nèi)存區(qū)的未使用區(qū),并在步驟124中將并入的內(nèi)存區(qū)的狀態(tài)改為“未使用”。在這些處理之后,在步驟126中,通知給請求源釋放了所請求的內(nèi)存區(qū),針對內(nèi)存釋放請求的處理結(jié)束。
接下來,將給出向資源管理部46B請求內(nèi)存之外的資源(例如特定文件等)的保留/釋放的情況的解釋。當輸入了資源保留請求時,資源管理部46B執(zhí)行圖2D示出的針對資源保留請求的處理。在針對資源保留請求的處理中,在步驟130中,通過操作系統(tǒng)30保留被請求保留的資源。在下一步驟132中,將保留的資源的地址登記在資源管理部46B的表中,與識別作為請求源的模塊的信息相對應(yīng)。在步驟134中,將保留的資源傳遞給請求源,處理結(jié)束。此外,當輸入資源釋放請求時,資源管理部46B執(zhí)行圖2E示出的針對資源釋放請求的處理。在針對資源釋放請求的處理中,在步驟136中,讀取與識別作為請求源的模塊的信息相對應(yīng)地登記在資源管理部46B的表中的信息(保留的資源的地址)。在下一步驟138中,通過操作系統(tǒng)30釋放由讀取的信息表示的所有資源。此外,在步驟140中,這樣更新表,即,從表中刪除與釋放的資源相對應(yīng)的信息。在下一步驟142中,通知請求源釋放了資源,處理結(jié)束。
這樣,在內(nèi)存之外的資源的保留/釋放中,在保留時,將保留的資源登記在表中,在釋放時,將登記在表中的資源(根據(jù)來自相同請求源的請求而保留的資源)全部釋放。因此,與其中資源釋放請求源指定要釋放的資源的方法相比,可確定地釋放資源。在這些內(nèi)存和資源保留/釋放處理中,存在這樣的情況在處理過程中,存在由資源不足等引起的處理失敗。在這種情況下,需要諸如通知錯誤管理部46C等的處理。但是,為了簡化解釋,這里將省略對這種錯誤處理的描述。
另一方面,當在具有圖像處理程序組34的裝置處出現(xiàn)實現(xiàn)圖像處理的情形時,特定的應(yīng)用32檢測該情形,并且由該應(yīng)用32執(zhí)行圖3中示出的處理。有一些實現(xiàn)圖像處理的情形的示例,其中,由用作圖像數(shù)據(jù)供應(yīng)部22的圖像讀取部讀取圖像,用戶指示執(zhí)行這樣的作業(yè)由用作圖像輸出部24的圖像記錄部將圖像記錄為記錄材料上的圖像、或者將圖像顯示為用作圖像輸出部24的顯示部上的圖像、或者由用作圖像輸出部24的寫入裝置將圖像數(shù)據(jù)寫到記錄介質(zhì)上、或者由用作圖像輸出部24的發(fā)送/接收部發(fā)送圖像數(shù)據(jù)、或者將圖像數(shù)據(jù)存儲在用作圖像輸出部24的圖像存儲部,或者是這樣的情況,用戶指示執(zhí)行這樣的作業(yè)對于由用作圖像數(shù)據(jù)供應(yīng)部22的接收部接收的圖像數(shù)據(jù)或者存儲在用作圖像數(shù)據(jù)供應(yīng)部22的圖像存儲部中的圖像數(shù)據(jù),執(zhí)行前述的記錄在記錄材料上、顯示在顯示部上、寫到記錄介質(zhì)中、發(fā)送、存儲在圖像存儲部中的任何一個。此外,需要執(zhí)行圖像處理的情形不限于上述的那些,例如,其可以是在應(yīng)用32可執(zhí)行的處理的名字等根據(jù)用戶的指示以列表的形式顯示在顯示器16上的狀態(tài)下,用戶選擇了作為執(zhí)行對象的處理的情況等。
當該情形出現(xiàn)時,必須如上所述地執(zhí)行某些類型的圖像處理。應(yīng)用32首先識別提供要處理的圖像數(shù)據(jù)的圖像數(shù)據(jù)供應(yīng)部22的類型(參照圖3的步驟150)。當識別出的類型是緩沖區(qū)(內(nèi)存14的部分區(qū)域)時(即,在圖3的步驟152的判斷結(jié)果為肯定的情況下),生成包括被標示為圖像數(shù)據(jù)供應(yīng)部22的緩沖區(qū)的緩沖器模塊40(同樣可參照圖3的步驟154)。由緩沖器控制部40B執(zhí)行后面將描述的緩沖器模塊40的新生成。通過生成執(zhí)行緩沖器模塊40的緩沖器控制部40B程序的進程、線程或?qū)ο?,生成緩沖器控制部40B。通過生成用作緩沖器40A的、由生成的緩沖器控制部40B保留的內(nèi)存區(qū),生成所述新生成。但是,是通過設(shè)置參數(shù)(所述參數(shù)使(緩沖器控制部40B)將指定的緩沖區(qū)識別為已被保留的緩沖器40A)并執(zhí)行生成緩沖器控制部40B的處理,來實現(xiàn)步驟154中的緩沖器模塊40的生成的。在這里生成的緩沖器模塊40起圖像數(shù)據(jù)供應(yīng)部22的作用。
接下來,以與上述方式相同的方式,應(yīng)用32識別圖像輸出部24(其用作被執(zhí)行了圖像處理的圖像數(shù)據(jù)的輸出目的地)的類型(參照圖3的步驟156)。如果識別出的類型是緩沖區(qū)(內(nèi)存14的部分區(qū)域)(即,如果圖3的步驟158的判斷結(jié)果是肯定的),則以與上述方式相同的方式生成緩沖器模塊40,該緩沖器模塊40包括被指定為圖像輸出部24的緩沖區(qū)(參照圖3的步驟160)。在這里生成的緩沖器模塊40起圖像輸出部24的作用。此外,應(yīng)用32識別要執(zhí)行的圖像處理的內(nèi)容,將要執(zhí)行的圖像處理分為與單獨的模塊生成部44相對應(yīng)的等級的圖像處理的組合,并判斷為了實現(xiàn)要執(zhí)行的圖像處理所需的圖像處理的類型以及單獨的圖像處理的執(zhí)行順序(參照圖3的步驟162)。例如通過將前述類型的圖像處理和單獨的圖像處理的執(zhí)行順序預(yù)先登記為與作業(yè)(可由用戶指示其執(zhí)行)的類型對應(yīng)的信息,并由應(yīng)用32讀出與已指示了其執(zhí)行的作業(yè)的類型相對應(yīng)的信息,來實現(xiàn)所述判斷。
然后,基于以上判斷的圖像處理的類型和執(zhí)行的順序,應(yīng)用32啟動對應(yīng)于執(zhí)行順序中的第一個圖像處理的模塊生成部44(即,生成執(zhí)行模塊生成部44的程序的進程、線程或?qū)ο?。其后(參照圖3的步驟164),應(yīng)用32通知已啟動的模塊生成部44以下信息作為該模塊生成部44生成模塊組所需的信息輸入模塊識別信息,用于識別將圖像數(shù)據(jù)輸入到該模塊組的輸入模塊;輸出模塊信息,用于識別該模塊組將圖像數(shù)據(jù)輸出至的輸出模塊;輸入圖像屬性信息,表示被輸入到該模塊組的輸入圖像數(shù)據(jù)的屬性;和要執(zhí)行的圖像處理的參數(shù),并且應(yīng)用32指示生成相應(yīng)的模塊組(參照圖3的步驟166)。
對于位于執(zhí)行順序的第一位的模塊組,圖像數(shù)據(jù)供應(yīng)部22是前述輸入模塊。對于位于執(zhí)行順序的第二位或其后的模塊組,前一級模塊組的最后一個模塊(通常是緩沖器模塊40)是輸入模塊。此外,在位于執(zhí)行順序的最后一位的模塊組,圖像輸出部24是前述輸出模塊,因此,圖像輸出部24被指定為輸出模塊。在其它的模塊組,輸出模塊不固定。因此,當應(yīng)用32未進行指定并且需要該指定時,由模塊生成部44生成并設(shè)置輸出模塊。此外,例如可以將輸入圖像屬性和圖像處理的參數(shù)預(yù)先登記為與可由用戶指定執(zhí)行的作業(yè)的類型相對應(yīng)的信息,并且應(yīng)用32通過讀出與已指示其執(zhí)行的作業(yè)的類型相對應(yīng)的信息?;蛘呖捎捎脩糁付ㄝ斎雸D像的屬性和圖像處理的參數(shù)。
另一方面,當應(yīng)用32啟動了模塊生成部44時,模塊生成部44執(zhí)行圖4A中示出的模塊生成處理(參照圖3中的步驟168)。在該模塊生成處理中,在步驟200中,在模塊生成部44判斷是否有接下來要生成的圖像處理模塊38。如果判斷結(jié)果是否定的,則模塊生成處理結(jié)束。如果存在要生成的圖像處理模塊38,則在步驟202中,模塊生成部44獲得表示輸入圖像數(shù)據(jù)的屬性的輸入圖像屬性信息。在下一步驟204中,模塊生成部44還考慮到在步驟202中獲得的信息表示的輸入圖像數(shù)據(jù)的屬性,判斷是否有必要生成在前面的步驟200中已判斷為要生成的圖像處理模塊38。
具體地,例如,對應(yīng)于正在執(zhí)行模塊生成處理的模塊生成部44是生成用于執(zhí)行色彩轉(zhuǎn)換處理的模塊組的模塊生成部。應(yīng)用32根據(jù)圖像處理的參數(shù)將CMY色彩空間指定為輸出圖像數(shù)據(jù)的色彩空間。當基于在步驟202中獲得的輸入圖像屬性信息,輸入圖像數(shù)據(jù)是RGB色彩空間數(shù)據(jù)時,需要生成將RGB色彩空間轉(zhuǎn)換為CMY色彩空間的圖像處理模塊38作為執(zhí)行色彩空間處理的圖像處理模塊38。但是,當輸入圖像數(shù)據(jù)是CMY色彩空間時,針對該色彩空間,輸入圖像數(shù)據(jù)的屬性和輸出圖像數(shù)據(jù)的屬性匹配,因此可判斷出不需要生成執(zhí)行色彩空間轉(zhuǎn)換處理的圖像處理模塊38。如果判斷出不必生成圖像處理模塊38,則程序返回到步驟200。
當在所生成的圖像處理模塊38的前一級存在緩沖器模塊40時,通過從圖像處理模塊38獲得輸出圖像數(shù)據(jù)的屬性,可實現(xiàn)獲得輸入圖像數(shù)據(jù)的屬性的處理。這里,所述圖像處理模塊38是自將圖像數(shù)據(jù)寫到該緩沖器模塊40的圖像處理模塊38的更前面的圖像處理模塊38。
在下一步驟206中,判斷在生成的圖像處理模塊38的后一級是否需要緩沖器模塊40。在該圖像處理模塊38的后一級是輸出模塊(圖像輸出部24)的情況下(例如,參照在圖5A至圖5C中示出的圖像處理部50的最后一級的圖像處理模塊38的情況),或者在所述圖像處理模塊是對圖像數(shù)據(jù)執(zhí)行諸如分析之類的圖像處理并將其結(jié)果輸出到另一圖像處理模塊38的模塊的情況下(例如,圖5B中示出的圖像處理部50中執(zhí)行斜交角檢測處理的圖像處理模塊38的情況),所述判斷結(jié)果是否定的,程序繼續(xù)前進到步驟210而不生成緩沖器模塊40。在上述情況之外的情況下,所述判斷結(jié)果是肯定的,程序前進到步驟208,在步驟208,通過啟動緩沖器控制部40B(即,生成執(zhí)行緩沖器控制部40B的程序的進程、線程或?qū)ο?,生成連接在圖像處理模塊38的后一級的緩沖器模塊40。當模塊生成部44(或者前述應(yīng)用32)啟動了緩沖器控制部40B時,執(zhí)行圖6所示的緩沖器控制處理。后面將描述該緩沖器控制處理。
在下一步驟210中,根據(jù)前級和后級的模塊(例如這兩個模塊都是緩沖器模塊40)的信息、處理參數(shù)和輸入圖像數(shù)據(jù)的屬性生成圖像處理模塊38。
當在步驟206中判斷出不需要后面的緩沖器模塊40時,不向圖像處理模塊38提供后面的緩沖器模塊40的信息。此外,在處理內(nèi)容固定并且不需要特殊圖像處理參數(shù)的情況下(例如50%的縮小處理的情況),不提供處理參數(shù)。
在模塊生成處理(步驟210)中,從登記在模塊庫36中的多個候選模塊中選擇圖像處理模塊38,匹配在步驟202中獲得的輸入圖像數(shù)據(jù)的屬性和要在圖像處理模塊38中執(zhí)行的處理參數(shù)。例如,當模塊生成部44生成執(zhí)行色彩轉(zhuǎn)換處理的模塊組時,應(yīng)用32基于處理參數(shù)將CMY色彩空間指定為輸出圖像數(shù)據(jù)的色彩空間。此外,在此情況下,當輸入圖像數(shù)據(jù)是RGB色彩空間的數(shù)據(jù)時,圖像處理模塊38將RGB色彩空間轉(zhuǎn)換為CMY色彩空間。如上所述,從登記在模塊庫36中并且執(zhí)行各種類型的色彩空間處理的多種類型的圖像處理模塊38之中選擇適合于所述處理的圖像處理模塊38。
此外,如果圖像處理模塊是執(zhí)行放大/縮小處理的圖像處理模塊38并且指定的放大/縮小率不是50%,則選擇按為輸入的圖像數(shù)據(jù)指定的放大/縮小率執(zhí)行放大/縮小處理的圖像處理模塊38。如果指定的放大/縮小率為50%,則選擇專門按50%的放大/縮小率執(zhí)行放大/縮小處理的圖像處理模塊38,即,通過將每隔一個像素去掉而執(zhí)行將輸入的圖像數(shù)據(jù)縮小50%的縮小處理的圖像處理模塊38。圖像處理模塊38的選擇不限于以上描述。例如,可在模塊庫36中登記圖像處理引擎38A進行的圖像處理中的單位處理數(shù)據(jù)量不同的多個圖像處理模塊38,并根據(jù)諸如可分配給圖像處理部50的內(nèi)存區(qū)的大小之類的操作環(huán)境,選擇適當?shù)膯挝惶幚頂?shù)據(jù)量的圖像處理模塊38(例如,前述大小越小,就選擇越小的單位處理數(shù)據(jù)量的圖像處理模塊38等)?;蛘哂蓱?yīng)用32或用戶選擇圖像處理模塊38。
在下一步驟212中,將后面的緩沖器模塊40的ID和生成的圖像處理模塊38的ID的組通知工作流管理部46A。這些ID是可用于唯一地區(qū)分這些單獨的模塊的信息。例如,該ID可以是按生成這些單獨的模塊的順序應(yīng)用的數(shù)字,或者可以是緩沖器模塊40和圖像處理模塊38的對象在內(nèi)存中的地址等。通知給工作流管理部46A的信息例如以如圖4B所示的表的形式或者以列表的形式或者以關(guān)聯(lián)數(shù)組的形式等保存在工作流管理部46A內(nèi),并且在后面的處理中使用。在下文中,將按照以表的形成保存所述信息的情況繼續(xù)解釋。
在如前所述的沒有后面的緩沖器模塊40的圖像處理模塊38的情況下,根據(jù)例如下面的方法執(zhí)行處理。在生成的圖像處理模塊38是管線的終點或者有向無環(huán)圖的終點之一的情況下(諸如執(zhí)行圖5A中的輸出處理的圖像處理模塊38的情況),將該圖像處理模塊38作為模塊生成部44的輸出,返回給作為調(diào)用源的應(yīng)用32。
此外,在執(zhí)行諸如圖5B中的斜交角檢測處理的圖像處理模塊38的情況下,在該情況下,在該生成的圖像處理模塊38處的圖像處理的結(jié)果在另一圖像處理模塊(執(zhí)行圖5B中的圖像旋轉(zhuǎn)處理的圖像處理模塊38)中使用,模塊生成部44指示重復(fù)執(zhí)行處理,直到關(guān)于該圖像處理模塊38的處理完成,并且模塊生成部44獲得處理結(jié)果。
當步驟212的處理結(jié)束時,控制返回步驟200,模塊生成部44判斷是否有接下來要生成的圖像處理模塊。單獨的模塊生成部44生成執(zhí)行相應(yīng)的給定圖像處理的模塊組。因此,通過針對各單獨的模塊生成部44預(yù)先登記并讀出以何種連接關(guān)系生成何種圖像處理模塊相關(guān)的信息,或者通過在操縱模塊生成部44的程序中對此進行描述,可實現(xiàn)所述判斷。例如,在模塊生成部44生成執(zhí)行由多種類型的圖像處理模塊38實現(xiàn)的圖像處理(例如傾斜校正處理,其由執(zhí)行斜交角檢測處理的圖像處理模塊38和執(zhí)行圖像旋轉(zhuǎn)處理的圖像處理模塊38實現(xiàn))的模塊組的情況下,生成包含兩個或更多個圖像處理模塊38的模塊組。
當被指示生成模塊組的模塊生成部44向應(yīng)用32通知完成了如上所述的模塊組的生成時,應(yīng)用32基于圖3的步驟162中的判斷結(jié)果,判斷為了實現(xiàn)要求的圖像處理,是否還需要生成執(zhí)行其它圖像處理的模塊組。如果圖像處理要求將多種類型的圖像處理組合,則應(yīng)用32啟動對應(yīng)于單獨的圖像處理的其它模塊生成部44,并順序執(zhí)行給出模塊組生成所需信息的通知的處理(同樣可參照圖3的步驟170和172)。然后,由于被順序啟動的模塊生成部44順序執(zhí)行(參照圖3的步驟174)上述模塊生成處理(圖4),所以按照圖5A至圖5C中示出的示例構(gòu)造執(zhí)行所要求的圖像處理的圖像處理部50。
根據(jù)本實施例,當執(zhí)行特定圖像處理的頻率較高等時,即使在生成執(zhí)行該特定圖像處理的圖像處理部50之后,應(yīng)用32也不指示用于生成執(zhí)行該特定圖像處理的圖像處理部50的多個模塊生成部44結(jié)束處理,并將它們保持為進程、線程或?qū)ο?。每次出現(xiàn)執(zhí)行該特定圖像處理的需要時,通過順序指示保持為進程、線程或?qū)ο蟮哪K生成部44生成模塊組,可重新生成執(zhí)行特定圖像處理的圖像處理部50。這樣,每次出現(xiàn)執(zhí)行特定圖像處理的需要時,不需要用于分別啟動相應(yīng)的模塊生成部44的處理,并且可縮短重新生成執(zhí)行特定圖像處理的圖像處理部50所需的時間。
當被模塊生成部44啟動時,圖像處理模塊38的控制部38B(見圖15A)執(zhí)行圖12示出的圖像處理模塊初始化處理。在該圖像處理模塊初始化處理中,首先在步驟250中,由于模塊生成部44執(zhí)行模塊生成處理(圖4)的步驟210的處理,所以控制部38B存儲從模塊生成部44提供的其自身模塊的前一級和后一級的模塊的信息。此外,在下一步驟252中,基于其自身模塊的圖像處理引擎38A執(zhí)行的圖像處理的類型和內(nèi)容等,控制部38B識別其自身模塊使用的內(nèi)存的大小以及其自身模塊使用的其它資源。其自身模塊使用的內(nèi)存主要是為了圖像處理引擎38A執(zhí)行圖像處理所需要的內(nèi)存。但是,在前面的模塊是圖像數(shù)據(jù)供應(yīng)部22的情況下或者在后面的模塊時圖像輸出部24的情況下,可能需要用作緩沖器的內(nèi)存,該內(nèi)存用于在從前一級和后一級模塊接收數(shù)據(jù)或者向前一級和后一級模塊發(fā)送數(shù)據(jù)時暫時存儲圖像數(shù)據(jù)。此外,在處理參數(shù)中包括表之類的信息的情況下,可能需要存儲其的內(nèi)存區(qū)。然后,在步驟254中,將在步驟252中識別的大小通知資源管理部46B,請求資源管理部46B保留該通知的大小的內(nèi)存區(qū)。
在圖2中示出的資源管理處理(資源管理部46B)中,當圖像處理模塊38和緩沖器模塊40請求保留內(nèi)存區(qū)時,在選擇并設(shè)置的內(nèi)存管理方法是例如第一管理方法的情況下,通過操作系統(tǒng)30從內(nèi)存14中保留由作為內(nèi)存保留請求源的模塊通知的大小的內(nèi)存區(qū)(連續(xù)區(qū)域)。然后,通過將保留的內(nèi)存區(qū)的頭地址通知給作為內(nèi)存保留請求源的模塊,將保留的內(nèi)存區(qū)傳遞給作為內(nèi)存保留請求源的模塊。此外,如果內(nèi)存管理方法是第二管理方法,則從預(yù)先保留的內(nèi)存區(qū)的未使用區(qū)中保留通知的大小的內(nèi)存區(qū)(連續(xù)區(qū)域),并且將保留的內(nèi)存區(qū)改為“已使用”,將保留的內(nèi)存區(qū)傳遞給內(nèi)存保留請求源。而且,如果選擇并設(shè)置的內(nèi)存管理方法是第三管理方法,則通過執(zhí)行上述針對內(nèi)存保留請求的處理(見圖2B),執(zhí)行對通知的大小的內(nèi)存區(qū)的保留和傳遞。
在圖12顯示的圖像處理模塊初始化處理(圖像處理模塊38的控制部38B)中,當通過上述處理經(jīng)由資源管理部46B保留了所需的內(nèi)存區(qū)時,在下一步驟256中,基于前面的步驟252的處理結(jié)果,判斷其自身模塊(的圖像處理引擎38A)是否需要內(nèi)存之外的資源。如果判斷結(jié)果是否定的,則程序繼續(xù)進行到步驟262而不執(zhí)行任何處理。如果判斷結(jié)果是肯定的,則程序繼續(xù)進行到步驟258,在步驟258,將其自身模塊所需的內(nèi)存之外的資源的類型等通知給資源管理部46B,并且請求資源管理部46B保留通知的其它資源,資源管理部46B對它們進行保留。
接下來,在步驟262中,控制部38B判斷其自身模塊的前面的模塊,如果不存在其自身模塊的前面的模塊,則程序繼續(xù)前進到步驟272。如果前面的模塊不同于緩沖器模塊40,例如是圖像數(shù)據(jù)供應(yīng)部22和特定文件等,則按需要在步驟270中執(zhí)行其初始化處理,并且程序進行到步驟272。此外,在存在其自身模塊的前面的模塊并且該前面的模塊是緩沖器模塊40的情況下,程序從步驟262進行到步驟264,并且對從前面的緩沖器模塊40讀取一次圖像數(shù)據(jù)而獲得的圖像數(shù)據(jù)的數(shù)據(jù)量(即,單位讀取數(shù)據(jù)量)進行識別。如果其自身模塊的前面的緩沖器模塊40的數(shù)量為一,存在一單位讀取數(shù)據(jù)量。但是,在諸如前面的緩沖器模塊40為多個時并且圖像處理引擎38A通過使用從該多個緩沖器模塊40的每一個獲得的圖像數(shù)據(jù)來執(zhí)行圖像處理的情況下,諸如在圖5C所示的圖像處理部50中執(zhí)行圖像合成處理的圖像處理模塊38的情況下,根據(jù)其自身模塊的圖像處理引擎38A執(zhí)行的圖像處理的類型和內(nèi)容、前面的緩沖器模塊40的數(shù)量等,確定與各前面的緩沖器模塊40相對應(yīng)的單位讀取數(shù)據(jù)量。
在步驟266中,通過將在步驟264中識別的單位讀取數(shù)據(jù)量通知單個前面的緩沖器模塊40,設(shè)置了針對該緩沖器模塊40的單位讀取數(shù)據(jù)量(還參照圖15A的(1))。在下一步驟268中,判斷是否在其自身模塊的所有前面的緩沖器模塊40處設(shè)置了單位讀取數(shù)據(jù)量。如果其自身模塊的前面的緩沖器模塊40的數(shù)量是一,則該判斷結(jié)果是肯定的,并且程序前進到步驟272。如果前面的緩沖器模塊40的數(shù)量是多于一個,則在步驟268的判斷結(jié)果是否定的,并且程序返回到步驟266,重復(fù)步驟266和268直到步驟268的判斷結(jié)果變成肯定的。這樣,為所有前面的緩沖器模塊40分別設(shè)置了單位讀取數(shù)據(jù)量。
在步驟272中,控制部38B判斷其自身模塊的后面的模塊。在其自身模塊的后面的模塊不同于緩沖器模塊40,例如是圖像輸出部24或特定文件等的情況下,按需要在步驟278中執(zhí)行其初始化處理,并且程序繼續(xù)進行到步驟280。例如,如果后面的模塊是由圖像記錄部、顯示部、寫入部或發(fā)送部的任何一個構(gòu)成的圖像輸出部24,則執(zhí)行針對該圖像輸出部24的處理作為前述初始化處理。這里,所述處理通知以與單位寫入數(shù)據(jù)量相對應(yīng)的數(shù)據(jù)量為單位輸出了圖像數(shù)據(jù)。此外,如果后面的模塊是緩沖器模塊40,則在步驟274中識別寫入一次圖像數(shù)據(jù)的數(shù)據(jù)量(即,單位寫入數(shù)據(jù)量)。在步驟276中,在后面的緩沖器模塊中設(shè)置該單位寫入數(shù)據(jù)量(還參照圖15A的(2)),其后,程序繼續(xù)進行到步驟280。在步驟280中,通知模塊生成部44該圖像處理模塊初始化處理已完成,并且圖像處理模塊初始化處理結(jié)束。
另一方面,當模塊生成部44或應(yīng)用32啟動構(gòu)成圖像處理部50的單獨的緩沖器模塊40的緩沖器控制部40B(見圖15B)時,緩沖器控制部40B執(zhí)行圖6所示的緩沖器控制處理。在該緩沖器控制處理中,當模塊生成部44或應(yīng)用32啟動緩沖器控制部40B并且已指示生成緩沖器模塊40時,在步驟356中,等待的請求的數(shù)目被初始化為0。在下一步驟358中,判斷其自身模塊的前面的圖像處理模塊38是否通知了單位寫入數(shù)據(jù)量或者其自身模塊的后面的圖像處理模塊38是否已通知了單位讀取數(shù)據(jù)量。如果判斷結(jié)果是否定的,則程序繼續(xù)進行到步驟362,在步驟362中,判斷與其自身模塊相連的所有圖像處理模塊38是否都已通知了單位寫入數(shù)據(jù)量或單位讀取數(shù)據(jù)量。如果判斷結(jié)果是否定的,則程序返回步驟358,重復(fù)步驟358和362,直到步驟358或362的判斷結(jié)果是肯定的。
當與其自身模塊相連的特定的圖像處理模塊38通知了單位寫入數(shù)據(jù)量或單位讀取數(shù)據(jù)量時,步驟358中的判斷結(jié)果是肯定的,程序進行到步驟360,在步驟360中,存儲所通知的單位寫入數(shù)據(jù)量或單位讀取數(shù)據(jù)量。其后,程序返回到步驟358。因此,每次由于與其自身模塊相連的單獨的圖像處理模塊38的控制部38B執(zhí)行圖像模塊初始化處理(圖12)的步驟266或步驟276的處理而從單獨的圖像處理模塊38通知了單位寫入數(shù)據(jù)量或單位讀取數(shù)據(jù)量時,都存儲所通知的單位寫入數(shù)據(jù)量或單位讀取數(shù)據(jù)量,并且在緩沖器模塊40設(shè)置通知的單位寫入數(shù)據(jù)量或單位讀取數(shù)據(jù)量(還參照圖15B的(1)和(2))。
當與其自身模塊相連的所有圖像處理模塊38都通知了圖像寫入數(shù)據(jù)量或圖像讀取數(shù)據(jù)量并且分別設(shè)置了所通知的單位寫入數(shù)據(jù)量和單位讀取數(shù)據(jù)量時,步驟362中的判斷結(jié)果是肯定的,程序繼續(xù)進行到步驟364。在步驟364中,基于與其自身模塊相連的單獨的圖像處理模塊38分別設(shè)置的單位寫入數(shù)據(jù)量和單位讀取數(shù)據(jù)量,緩沖器控制部40B確定作為其自身模塊的緩沖器40A的管理單位的單位緩沖區(qū)的大小,并存儲所確定的單位緩沖區(qū)的大小。在其自身模塊處設(shè)置的單位寫入數(shù)據(jù)量和單位讀取數(shù)據(jù)量的最大值適合于單位緩沖區(qū)的大小。但是,可將單位寫入數(shù)據(jù)量設(shè)置為單位緩沖區(qū)的大小,或者可將單位讀取數(shù)據(jù)量(在多個圖像處理模塊連接在其自身模塊的后一級的情況下,為由單獨的圖像處理模塊38分別設(shè)置的單位讀取數(shù)據(jù)量的最大值)設(shè)置為單位緩沖區(qū)的大小?;蛘?,可設(shè)置單位寫入數(shù)據(jù)量和單位讀取數(shù)據(jù)量(的最大值)的最小公倍數(shù)?;蛘撸绻撟钚」稊?shù)小于預(yù)定值,則可設(shè)置該最小公倍數(shù),否則如果該最小公倍數(shù)大于或等于預(yù)定值,則可將另一值(例如,前述單位寫入數(shù)據(jù)量和單位讀取數(shù)據(jù)量的最大值、或者單位寫入數(shù)據(jù)量、或者單位讀取數(shù)據(jù)量(的最大值)中的任何一個)設(shè)置為單位緩沖區(qū)的大小。
在下一步驟366中,緩沖器控制部40B判斷是否已提供了用作其自身模塊的緩沖器40A的內(nèi)存區(qū)。如果其自身模塊是由模塊生成部44生成的,則該判斷結(jié)果是否定的,并且在步驟368中將緩沖器標志設(shè)置為0。其后,程序繼續(xù)進行到步驟374。此外,如果其自身模塊是由應(yīng)用32生成的并且是起圖像數(shù)據(jù)供應(yīng)部22和圖像輸出部24的作用的緩沖器模塊40,則用作其自身模塊的緩沖器40A的內(nèi)存區(qū)已經(jīng)存在。因此,步驟366的判斷結(jié)果是肯定的,并且程序繼續(xù)進行到步驟370。在步驟370中,將在先前的步驟364中確定的單位緩沖區(qū)的大小改變?yōu)榻⒌膬?nèi)存區(qū)的大小,該建立的內(nèi)存區(qū)被用作其自身模塊的緩沖器40A。此外,在下一步驟372中,將緩沖器標志設(shè)置為1,其后,程序繼續(xù)進行到步驟374。
在步驟374中,緩沖器控制部40B生成與其自身模塊的單獨的后面的圖像處理模塊38相對應(yīng)的各個有效數(shù)據(jù)指針,并初始化各生成的有效數(shù)據(jù)指針。有效數(shù)據(jù)指針分別指示由前面的圖像處理模塊寫入其自身模塊的緩沖器40A中的圖像數(shù)據(jù)之中沒有被相應(yīng)的后面的圖像處理模塊38讀取的圖像數(shù)據(jù)(有效數(shù)據(jù))的頭位置(下一讀取起始位置)和結(jié)束位置。在步驟374的初始化處理中,通常設(shè)置特定信息,該特定信息意味著有效數(shù)據(jù)不存在。如果其自身模塊是由應(yīng)用32生成的并且是起圖像提供部22的作用的緩沖器模塊40,則存在這樣的情況作為圖像處理的對象的圖像數(shù)據(jù)已被寫入用作其自身模塊的緩沖器40A的內(nèi)存區(qū)中。在這種情況下,將該圖像數(shù)據(jù)的頭位置和結(jié)束位置分別設(shè)置為與單獨的后面的圖像處理模塊38相對應(yīng)的有效數(shù)據(jù)指針。
如上所述,緩沖器模塊40的初始化處理完成,在下一步驟376中,通知工作流管理部46A初始化處理完成。此外,在步驟378中,判斷是否設(shè)置了大于0的值,作為針對在先前的步驟356中為其執(zhí)行了初始設(shè)置的等待請求的數(shù)目。如果判斷結(jié)果是否定的,則程序繼續(xù)進行到步驟380。判斷是否已從連接在其自身模塊的前一級或后一級的圖像處理模塊38接收到刪除通知,該刪除通知給出要執(zhí)行刪除圖像處理模塊38的處理的通知。如果該判斷結(jié)果也是否定的,則程序返回到步驟378,重復(fù)步驟378和步驟380,直到任一判斷為肯定的。
另一方面,當由于由模塊生成部44進行的上述模塊生成處理(見圖4)而完成了執(zhí)行所需的圖像處理的圖像處理部50的構(gòu)建時,應(yīng)用32判斷圖像處理的執(zhí)行形式是塊單位處理還是整幅圖像處理。然后,通過啟動執(zhí)行與判斷出的執(zhí)行形式相對應(yīng)的工作流管理部46A的程序的進程、線程或?qū)ο?,?yīng)用32指示工作流管理部46A執(zhí)行圖像處理部50的圖像處理(還參照圖3的步驟176)。
根據(jù)圖像處理的執(zhí)行形式啟動不同的程序。當圖像處理的執(zhí)行形式是塊單位處理時,處理管理部46的工作流管理部46A執(zhí)行圖16所示的塊單位控制處理。此外,當圖像處理的執(zhí)行形式是整幅圖像處理時,46A執(zhí)行圖17所示的整幅圖像處理。塊單位處理和整幅圖像控制處理分別對應(yīng)于圖3的步驟178中示出的圖像處理部控制處理。在塊單位處理或整幅圖像控制處理中,由于工作流管理部46A將處理請求輸入到構(gòu)成圖像處理部50的圖像處理模塊38之中的預(yù)定的圖像處理模塊38,所以以塊單位或整幅圖像的執(zhí)行形式執(zhí)行圖像處理部50的圖像處理。
在下文中,在描述圖像處理部50的整體操作之前,將按順序描述在由單獨的緩沖器模塊40的緩沖器控制部40B執(zhí)行的初始化處理完成之后的處理、和由單獨的圖像處理模塊38的控制部38B執(zhí)行的圖像處理模塊控制處理。
在本實施例中,在圖像處理模塊38將圖像數(shù)據(jù)寫到后面的緩沖器模塊40的情況下,從圖像處理模塊38將寫入請求輸入到緩沖器模塊40。在圖像處理模塊38從前面的緩沖器模塊40讀取圖像數(shù)據(jù)的情況下,從圖像處理模塊38將讀請求輸入到緩沖器模塊40。因此,當從其自身模塊的前面的圖像處理模塊38輸入寫入請求時,或者當從其自身模塊的后面的圖像處理模塊38輸入數(shù)據(jù)請求時,由于出現(xiàn)中斷,所以緩沖器模塊40的緩沖器控制部40B執(zhí)行圖7所示的請求接收中斷處理。應(yīng)該注意到,在下文中,給出了以出現(xiàn)中斷為前提的描述,但是,也可像通常的程序那樣,處理因方法或函數(shù)的調(diào)用而開始。在此情況下,可使用為各請求執(zhí)行處理的結(jié)構(gòu),而請求不像后面的描述那樣在隊列中排隊。
在請求接收中斷處理中,首先,在步驟400中,在隊列的尾部登記識別將寫入請求或數(shù)據(jù)請求輸入到其自身模塊的請求源的請求源識別信息和表示請求的類型(寫入或讀取)的請求類型信息作為請求信息。在分配給單獨的緩沖器模塊40的內(nèi)存上分別形成這些隊列。此外,在下一步驟402中,將等待請求的數(shù)量加一,請求接收中斷處理結(jié)束。由于該請求接收中斷處理,每次從特定緩沖器模塊40的前一級或后一級的圖像處理模塊將寫入請求或讀請求輸入到該特定緩沖器模塊40時,在對應(yīng)于該特定緩沖器模塊40的隊列中順序登記與輸入的寫入請求或讀請求相對應(yīng)的請求信息,并且等待請求的數(shù)量被逐個增加。
當由于執(zhí)行上述請求接收中斷處理而使等待請求的數(shù)量變成大于或等于1的值時,緩沖器控制處理(圖6)的步驟378的判斷結(jié)果是肯定的,程序繼續(xù)進行到步驟382,在步驟382中,從隊列頭取出請求信息。在下一步驟384中,基于在步驟382中取出的請求信息中包括的請求類型信息,判斷與取出的請求信息相對應(yīng)的請求的類型(寫入或讀取),程序根據(jù)該判斷的結(jié)果而分支。如果請求類型是寫入請求,則程序從步驟384繼續(xù)進行到步驟386,執(zhí)行圖8所示的數(shù)據(jù)寫入處理。
在數(shù)據(jù)寫入處理中,首先,在步驟410,判斷緩沖器標志是否設(shè)置為1,即,其自身模塊(當前模塊)是否是由應(yīng)用32生成的緩沖器模塊40。如果該判斷結(jié)果是肯定的,則因為已經(jīng)保留了用作緩沖器40A的內(nèi)存區(qū),所以程序繼續(xù)進行到步驟422而不執(zhí)行任何處理。如果步驟410中的判斷結(jié)果是否定的,即,如果其自身模塊是由模塊生成部44生成的緩沖器模塊40,則程序進行到步驟412。在步驟412中,判斷在構(gòu)成其自身模塊的緩沖器40A的單位緩沖區(qū)中是否存在具有空閑空間區(qū)域的單位緩沖區(qū)(圖像數(shù)據(jù)沒有寫至其末端的單位緩沖區(qū))。
在由模塊生成部44生成的緩沖區(qū)40,最初并沒有保留用作緩沖器40A的內(nèi)存區(qū)(單位緩沖區(qū)),而是每次內(nèi)存區(qū)出現(xiàn)不足時作為單位保留單位緩沖區(qū)。因此,當將寫入請求第一次輸入到緩沖器模塊40時,用作緩沖器40A的內(nèi)存區(qū)(單位緩沖區(qū))并不存在,因而該判斷結(jié)果將是否定的。此外,在通過后面將描述的處理保留了用作緩沖器40A的單位緩沖區(qū)之后,在將圖像數(shù)據(jù)寫到單位緩沖區(qū)時該單位緩沖區(qū)剛好變滿的情況下,前述判斷結(jié)果同樣將是否定的。
如果步驟412中的判斷結(jié)果是否定的,則程序繼續(xù)進行到步驟414。在步驟414中,基于從隊列取出的請求信息中包括的請求源識別信息來識別作為寫入請求源的圖像處理模塊38,并且識別由作為寫入請求源的圖像處理模塊38設(shè)置的單位寫入數(shù)據(jù)量,其后,判斷該所識別的單位寫入數(shù)據(jù)量是否大于在先前的步驟364(圖6)中確定的單位緩沖區(qū)的大小。在采用在其自身模塊設(shè)置的單位寫入數(shù)據(jù)量和單位讀取數(shù)據(jù)量的最大值的情況下,或者采用在其自身模塊設(shè)置的單位寫入數(shù)據(jù)量的情況下,該判斷將總是否定的,程序繼續(xù)進行到步驟420。在步驟420中,將要保留的內(nèi)存區(qū)的大小(單位緩沖區(qū)的大小)通知給資源管理部46B,向資源管理部46B請求保留用作其自身模塊的緩沖器40A的內(nèi)存區(qū)(在存儲圖像數(shù)據(jù)時使用的單位緩沖區(qū))。這樣,由于先前描述的由資源管理部46B執(zhí)行的步驟104至步驟114(見圖2B)的處理,保留了單位緩沖區(qū)。
此外,在構(gòu)成其自身模塊的緩沖器40A的單位緩沖區(qū)之中存在具有空閑空間區(qū)域的單位緩沖區(qū)的情況下,步驟412中的判斷結(jié)果是肯定的,程序繼續(xù)進行到步驟416。在步驟416中,以與上述步驟414相同的方式,識別由作為寫入請求源的圖像處理模塊38設(shè)置的單位寫入數(shù)據(jù)量,其后,判斷在該具有空閑空間區(qū)域的單位緩沖區(qū)中的空閑空間區(qū)域的大小是否大于或等于所識別出的單位寫入數(shù)據(jù)量。如果該判斷結(jié)果是肯定的,則不需要新保留用作其自身模塊的緩沖器40A的單位緩沖區(qū),因此,程序繼續(xù)進行到步驟422而不執(zhí)行任何操作。
如果單位緩沖區(qū)的大小是單位寫入數(shù)據(jù)量的整數(shù)倍,則每次從其自身模塊的前面的圖像處理模塊38輸入寫入請求時,如上所述,步驟412、414的判斷結(jié)果都是否定的或者步驟412、416的判斷結(jié)果都是肯定的,并且僅按需要保留用作緩沖器40A的單位緩沖區(qū)。
另一方面,在單位緩沖區(qū)的大小不是單位寫入數(shù)據(jù)量的整數(shù)倍的情況下,通過重復(fù)地將單位寫入數(shù)據(jù)量的圖像數(shù)據(jù)寫到緩沖器40A(單位緩沖區(qū)),如還在圖9A中作為示例示出的狀態(tài)出現(xiàn),在該狀態(tài)中,具有空閑空間區(qū)域的單位緩沖區(qū)的空閑空間區(qū)域的大小小于單位寫入數(shù)據(jù)量(步驟416的判斷結(jié)果是否定的)。此外,在本實施例中,還可采用在其自身模塊設(shè)置的單位讀取數(shù)據(jù)量(或者其最大值)作為單位緩沖區(qū)的大小。但是,如果其大小小于單位寫入數(shù)據(jù)量(即,如果步驟414的判斷結(jié)果是肯定的),則當輸入寫入請求時總是出現(xiàn)前述狀態(tài)。
如上所述,在具有空閑空間區(qū)域的單位緩沖區(qū)中的空閑空間區(qū)域的大小小于單位寫入數(shù)據(jù)量的情況下,寫入了單位寫入數(shù)據(jù)量的圖像數(shù)據(jù)的區(qū)域跨越多個單位緩沖區(qū)。但是,在本實施例中,因為以單位緩沖區(qū)為單位來保留用作緩沖器40A的內(nèi)存區(qū),所以不可能確保在不同時間保留的單位緩沖區(qū)是在實際內(nèi)存區(qū)(內(nèi)存14)上連續(xù)的區(qū)域。因此,在寫入了圖像數(shù)據(jù)的區(qū)域跨越多個單位緩沖區(qū)的情況下,即,在步驟416的判斷結(jié)果是否定的或者步驟414的判斷結(jié)果是肯定的的情況下,程序繼續(xù)進行到步驟418。在步驟418中,將單位寫入數(shù)據(jù)量通知給資源管理部46B作為要保留的內(nèi)存區(qū)的大小,并向資源管理部46B請求保留用于寫入的內(nèi)存區(qū)(用于寫入的緩沖區(qū)參照圖9B)。然后,當保留了用于寫入的緩沖區(qū)時,在下一步驟420中,執(zhí)行對用作緩沖器40A的單位緩沖區(qū)的保留。
在步驟422中,如果具有空閑空間區(qū)域的單位緩沖區(qū)中的空閑空間區(qū)域的大小大于或等于單位寫入數(shù)據(jù)量,則使該空閑空間區(qū)域成為寫入?yún)^(qū)。另一方面,如果具有空閑空間區(qū)域的單位緩沖區(qū)中的空閑空間區(qū)域的大小小于單位寫入數(shù)據(jù)量,則使新保留的用于寫入的緩沖區(qū)成為寫入?yún)^(qū),將該寫入?yún)^(qū)的頭地址通知給作為寫入請求源的圖像處理模塊38,并要求該圖像處理模塊38從通知的頭地址起按順序?qū)懭胱鳛閷懭氲膶ο蟮膱D像數(shù)據(jù)。這樣,作為寫入請求源的圖像處理模塊38將圖像數(shù)據(jù)寫到已通知了其頭地址的寫入?yún)^(qū)(單位緩沖區(qū)或用于寫入的緩沖區(qū))(見圖9B)。如上所述,如果寫入了圖像數(shù)據(jù)的區(qū)域跨越多個單位緩沖區(qū),則分開保留用于寫入的緩沖區(qū)。因此,不管寫入了圖像數(shù)據(jù)的區(qū)域是否跨越多個單位緩沖區(qū),僅僅通過如上所述給出寫入?yún)^(qū)的頭地址的通知就可實現(xiàn)寫入?yún)^(qū)向作為寫入請求源的圖像處理模塊38的通知,并且與圖像處理模塊38的接口將會簡單。
在下一步驟424中,判斷前面的圖像處理模塊38是否完成了圖像數(shù)據(jù)向?qū)懭雲(yún)^(qū)的寫入,重復(fù)步驟424直到判斷結(jié)果是肯定的。當前面的圖像處理模塊38給出了寫入完成通知時,步驟424的判斷結(jié)果是肯定的,并且程序繼續(xù)進行到步驟426。在步驟426中,判斷上述寫入處理中的寫入?yún)^(qū)是否是在先前的步驟416中保留的用于寫入的緩沖區(qū)。如果該判斷結(jié)果是否定的,則程序進行到步驟432而不執(zhí)行任何處理。如果步驟426的判斷結(jié)果是肯定的,則程序進行到步驟428。在步驟428中,如圖9C中作為示例所示出的,復(fù)制寫入了用于寫入的緩沖區(qū)的圖像數(shù)據(jù),狀態(tài)為所述圖像數(shù)據(jù)在具有空閑空間區(qū)域的單位緩沖區(qū)和在先前的步驟422中保留的新的單位緩沖區(qū)之間進行劃分。此外,在步驟430中,將在先前的步驟418中作為用于寫入的緩沖區(qū)而保留的內(nèi)存區(qū)的頭地址通知給資源管理部46B,并且請求資源管理部46B釋放該內(nèi)存區(qū)。
這里,給出對這樣的實施例的解釋,在該實施例中,當需要時保留用于寫入的緩沖區(qū),當不再需要時立刻釋放該用于寫入的緩沖區(qū)。但是,在用于存儲的單位緩沖區(qū)的大小不是單位寫入數(shù)據(jù)量的整數(shù)倍時,用于寫入的緩沖區(qū)是絕對必要的。因此,可以使用這樣的結(jié)構(gòu),其中,在初始化時保留該結(jié)構(gòu),在刪除緩沖器模塊40時釋放該結(jié)構(gòu)。
當圖像處理模塊38和緩沖器模塊40請求釋放內(nèi)存區(qū)時,資源管理部46B執(zhí)行與選擇設(shè)置的內(nèi)存管理方法相對應(yīng)的釋放存儲器的處理。例如,如果內(nèi)存管理方法是第三管理方法,則執(zhí)行圖2C的針對內(nèi)存釋放請求的處理,并執(zhí)行內(nèi)存區(qū)的釋放。
在數(shù)據(jù)寫入處理(圖8)中,當步驟426中的判斷結(jié)果為否定的時候,或者當在步驟430中請求釋放存儲器之后資源管理部46B給出了釋放完成通知時,程序繼續(xù)進行到步驟432。在步驟432中,在與其自身模塊的單獨的后面的圖像處理模塊38相對應(yīng)的有效數(shù)據(jù)指針之中,分別更新表示有效數(shù)據(jù)的末端位置的指針(參照圖9C)。通過將由指針指示的有效數(shù)據(jù)的末端位置向后移動對應(yīng)于單位寫入數(shù)據(jù)量的量來實現(xiàn)指針的更新。在由其自身模塊的前面的圖像處理模塊38此次寫入的圖像數(shù)據(jù)是與作為處理對象的圖像數(shù)據(jù)的末端相對應(yīng)的數(shù)據(jù)的情況下,當由前面的圖像處理模塊38進行的寫入處理完成時,給出整個處理結(jié)束通知,該通知表示作為處理對象的圖像數(shù)據(jù)已結(jié)束,并且從前面的圖像處理模塊38輸入寫入的圖像數(shù)據(jù)的大小。
因此,在當寫入處理完成時從前面的圖像處理模塊38輸入整個處理結(jié)束通知的情況下,通過將有效數(shù)據(jù)的末端位置向后移動與同時通知的大小相對應(yīng)的量來執(zhí)行指針更新。
在下一步驟434中,基于在完成寫入處理時是否輸入了整個處理結(jié)束通知,判斷作為處理對象的圖像數(shù)據(jù)到緩沖器40A的寫入是否完成。如果該判斷結(jié)果是否定的,則程序繼續(xù)進行到步驟438而不執(zhí)行任何處理。但是,如果該判斷是肯定的,則程序進行到步驟436,在步驟436中,將數(shù)據(jù)最終位置信息(其表示這是作為處理對象的圖像數(shù)據(jù)的末端)添加到在步驟432中更新的指針(在與其自身模塊的單獨的后面的圖像處理模塊38相對應(yīng)的有效指針之中,該指針示出了有效數(shù)據(jù)的末端位置)。其后,程序進行到步驟438。然后,在步驟438中,將等待請求的數(shù)量減1,數(shù)據(jù)寫入處理結(jié)束,程序返回到緩沖器控制處理(圖6)的步驟378。
在緩沖器控制處理(圖6)中,在與步驟382中取出的請求信息相對應(yīng)的請求類型是讀取的情況下,程序從步驟384進行到步驟388,執(zhí)行圖10所示的數(shù)據(jù)讀取處理。在數(shù)據(jù)讀取處理中,首先,在步驟450中,基于從隊列取出的請求信息中包括的請求源識別信息,識別作為讀取請求源的圖像處理模塊38,并識別由作為讀取請求源的圖像處理模塊38設(shè)置的單位讀取數(shù)據(jù)量?;谂c作為讀取請求源的圖像處理模塊38相對應(yīng)的有效數(shù)據(jù)指針,識別與作為讀取請求源的圖像處理模塊38相對應(yīng)的有效數(shù)據(jù)在緩沖器40A上的頭位置和末端位置。
在下一步驟452中,基于在步驟450中識別的有效數(shù)據(jù)的頭位置和末端位置,判斷與作為讀取請求源的圖像處理模塊38相對應(yīng)的有效數(shù)據(jù)(可由作為讀取請求源的圖像處理模塊38讀取的圖像數(shù)據(jù))是否大于或等于單位讀取數(shù)據(jù)量。
如果該判斷結(jié)果是否定的,則程序繼續(xù)進行到步驟454,在步驟454中,判斷有效數(shù)據(jù)的末端是否是作為處理對象的圖像數(shù)據(jù)的末端,其中,有效數(shù)據(jù)存儲在緩沖器40A中,并且可被作為讀取請求源的圖像處理模塊38讀取。
步驟452或步驟454中的判斷結(jié)果是肯定的,在此情況下程序進行到步驟456。這樣的情況的一個示例是與作為讀取請求源的圖像處理模塊38相對應(yīng)的有效數(shù)據(jù)存儲在緩沖器40A中,所述有效數(shù)據(jù)的量大于或等于單位讀取數(shù)據(jù)量。這樣的情況的另一示例是雖然存儲在緩沖器40A中并與作為讀取請求源的圖像處理模塊38相對應(yīng)的有效數(shù)據(jù)小于單位讀取數(shù)據(jù)量,但是該有效數(shù)據(jù)的末端是作為處理對象的圖像數(shù)據(jù)的末端。在步驟456中,基于在先前的步驟450中識別的有效數(shù)據(jù)的頭位置,識別單位緩沖區(qū)(該單位緩沖區(qū)存儲有效數(shù)據(jù)的頭部的圖像數(shù)據(jù))。此外,通過判斷識別出的單位緩沖區(qū)中存儲的有效數(shù)據(jù)的數(shù)據(jù)量是否大于或等于在步驟450中識別的單位讀取數(shù)據(jù)量,來判斷作為此次讀取對象的有效數(shù)據(jù)是否跨越多個單位緩沖區(qū)。
如果步驟456的判斷結(jié)果是否定的,則程序進行到步驟462而不執(zhí)行任何處理。這里,如圖11A所示,例如,在存儲有效數(shù)據(jù)的頭部圖像數(shù)據(jù)的單位緩沖區(qū)中存儲的有效數(shù)據(jù)的數(shù)據(jù)量小于單位讀取數(shù)據(jù)量并且作為此次讀取對象的有效數(shù)據(jù)跨越多個單位緩沖區(qū)的情況不限于作為此次讀取對象的有效數(shù)據(jù)被存儲在實際存儲器(內(nèi)存14)上連續(xù)的區(qū)域中。因此,如果步驟456中的判斷結(jié)果是肯定的,則程序繼續(xù)進行到步驟460,在步驟460中,將與作為讀取請求源的圖像處理模塊38相對應(yīng)的單位讀取數(shù)據(jù)量通知給資源管理部46B作為要保留的內(nèi)存區(qū)的大小,并且向資源管理部46B請求保留在讀取中使用的內(nèi)存區(qū)(用于讀取的緩沖區(qū),見圖11B)。當保留了用于讀取的緩沖區(qū)時,在下一步驟460中,將作為讀取對象并且存儲在多個單位緩沖區(qū)上的有效數(shù)據(jù)復(fù)制到在步驟458中保留的用于讀取的緩沖區(qū)(還參照圖11B)。
在步驟462中,如果將作為讀取對象的有效數(shù)據(jù)存儲在單個單位緩沖區(qū)中,則使得該單位緩沖區(qū)之中的存儲有作為讀取對象的有效數(shù)據(jù)的區(qū)域成為讀取區(qū)域。另一方面,如果作為讀取對象有效數(shù)據(jù)存儲在多個單位緩沖區(qū)上,則將用于讀取的緩沖區(qū)用作讀取區(qū),將該讀取區(qū)的頭地址通知給作為讀取請求源的圖像處理模塊38,并且要求該圖像處理模塊38從通知的頭地址起按順序讀取圖像數(shù)據(jù)。這樣,作為讀取請求源的圖像處理模塊38執(zhí)行從已通知了其頭地址的讀取區(qū)(單位緩沖區(qū)或用于讀取的緩沖區(qū))讀取圖像數(shù)據(jù)(還見圖11C)。在作為讀取對象的有效數(shù)據(jù)是與作為處理對象的圖像數(shù)據(jù)的末端相對應(yīng)的數(shù)據(jù)的情況下(即,在作為讀取對象的有效數(shù)據(jù)的末端位置與由有效數(shù)據(jù)指針所指示的有效數(shù)據(jù)的末端位置重合的情況下(所述有效數(shù)據(jù)指針與作為讀取請求源的圖像處理模塊38相對應(yīng),并且數(shù)據(jù)最終位置信息被加到該指針)),還將作為讀取對象的有效數(shù)據(jù)的大小以及這是作為處理對象的圖像數(shù)據(jù)的末端這一事實通知給作為讀取請求源的圖像處理模塊38。
如上所述,在作為讀取對象的有效數(shù)據(jù)被存儲為跨越多個單位緩沖區(qū)的情況下,將作為讀取對象的有效數(shù)據(jù)復(fù)制到分開保留的用于讀取的緩沖區(qū)。因此,不管作為讀取對象的有效數(shù)據(jù)是否存儲在多個單位緩沖區(qū)上,僅僅通過如上所述地給出讀取區(qū)域的頭地址的通知就可實現(xiàn)讀取區(qū)域向作為讀取請求源的圖像處理模塊38的通知,并且與圖像處理模塊38的接口將會簡單。在其自身模塊是由應(yīng)用32生成的緩沖器模塊40的情況下,用作緩沖器40A的內(nèi)存區(qū)(單位緩沖區(qū)的集合)是連續(xù)區(qū)域。因此,以下是可能的在執(zhí)行步驟456的判斷之前,判斷緩沖器標識是否為1,如果判斷結(jié)果是肯定的,則不管作為讀取對象的有效數(shù)據(jù)是否存儲在多個單位緩沖區(qū)上,程序都繼續(xù)進行到步驟462。
在下一步驟464中,判斷作為讀取請求源的圖像處理模塊38是否完成了圖像數(shù)據(jù)從讀取區(qū)中的讀取,重復(fù)步驟464直到該判斷結(jié)果成為肯定的。當作為讀取請求源的圖像處理模塊38通知了讀取完成時,步驟464的判斷結(jié)果是肯定的,程序進行到步驟466,在步驟466中,判斷上述讀取處理中的讀取區(qū)是否是在先前的步驟458中保留的用于讀取的緩沖區(qū)。如果該判斷結(jié)果是否定的,則程序繼續(xù)進行到步驟470而不執(zhí)行任何處理。如果步驟466中的判斷是肯定的,則程序繼續(xù)進行到步驟468,在步驟468中,將在先前的步驟458中作為用于讀取的緩沖區(qū)保留的內(nèi)存區(qū)的大小和頭地址通知給資源管理部46B,并向資源管理部46B請求釋放該內(nèi)存區(qū)。同樣,對于用于讀取的緩沖區(qū),與用于寫入的緩沖區(qū)方式相同,如果用于存儲的單位緩沖區(qū)的大小不是單位讀取數(shù)據(jù)量的整數(shù)倍,則用于讀取的緩沖區(qū)是絕對必要的。因此,可以使用這樣的結(jié)構(gòu),其中,在初始化時保留該結(jié)構(gòu),在刪除緩沖器模塊40時釋放該結(jié)構(gòu)。
在下一步驟470中,在與作為讀取請求源的圖像處理模塊38相對應(yīng)的有效數(shù)據(jù)指針之中,更新指示有效數(shù)據(jù)的頭位置的指針(還參照圖11C)。通過將由指針指示的有效數(shù)據(jù)的頭位置向后移動對應(yīng)于單位讀取數(shù)據(jù)量的量可實現(xiàn)指針的更新。如果作為此次讀取對象的有效數(shù)據(jù)是與作為處理對象的圖像數(shù)據(jù)的末端相對應(yīng)的數(shù)據(jù),則通過將有效數(shù)據(jù)的頭位置向后移動與作為此次讀取對象的有效數(shù)據(jù)的大小(所述大小也被通知給作為讀取請求源的圖像處理模塊38)相對應(yīng)的量來執(zhí)行指針更新。
在步驟472中,分別參照對應(yīng)于單獨的后面的圖像處理模塊38的有效數(shù)據(jù)指針,判斷由于步驟470的指針更新,在構(gòu)成緩沖器40A的單位緩沖區(qū)之中是否出現(xiàn)了各自的后面的圖像處理模塊38已全部完成了對其存儲的圖像數(shù)據(jù)的讀取的單位緩沖區(qū),即,是否出現(xiàn)了其中沒有存儲有效數(shù)據(jù)的單位緩沖區(qū)。如果該判斷結(jié)果是否定的,則程序進行到步驟478而不執(zhí)行任何處理。如果該判斷結(jié)果是肯定的,則程序進行到步驟474,在步驟474中,判斷緩沖器標志是否為1。如果其自身模塊是由模塊生成部44生成的緩沖器模塊40,則判斷結(jié)果是否定的并且程序進行到步驟476,在步驟476中,向資源管理部46B請求釋放其中沒有存儲有效數(shù)據(jù)的單位緩沖區(qū)。
如果其自身模塊是由應(yīng)用32生成的緩沖器模塊40,則步驟474中的判斷結(jié)果是肯定的,并且程序繼續(xù)進行到步驟478而不執(zhí)行任何處理。因此,如果將由用戶指定的緩沖區(qū)(內(nèi)存區(qū))用作緩沖器40A,則存儲該緩沖區(qū)不釋放。然后,在步驟478中,將等待請求的數(shù)量減1,數(shù)據(jù)讀取處理結(jié)束,程序返回到緩沖器控制處理(圖6)的步驟378。
另一方面,在存儲在緩沖器40A中并且可被作為讀取請求源的圖像處理模塊38讀取的有效數(shù)據(jù)的數(shù)據(jù)量小于單位讀取數(shù)據(jù)量,并且可讀取的有效數(shù)據(jù)的末端不是作為處理對象的圖像數(shù)據(jù)的末端的情況下(即,在圖15B的(4)中檢測到?jīng)]有可讀的有效數(shù)據(jù)的情況下),步驟452和454的判斷結(jié)果都是否定的,程序繼續(xù)進行到步驟480。在步驟480中,將請求新的圖像數(shù)據(jù)的數(shù)據(jù)請求輸出到工作流管理部46A(還見圖15B中的(5))。在此情況下,工作流管理部46A將處理請求輸入到其自身模塊的前面的圖像處理模塊38。此外,在步驟482中,將在先前的步驟382(見圖6)中從隊列中取出的請求信息再次登記在原始隊列的末端,并且數(shù)據(jù)讀取處理結(jié)束。
如圖6所示,當數(shù)據(jù)讀取處理結(jié)束時,程序返回到步驟378。在此情況下,如果在隊列中沒有登記其它的請求信息,則在隊列的末端再次登記的請求信息被從隊列中立即再次取出,并且再次執(zhí)行圖10的數(shù)據(jù)讀取處理。如果在隊列中登記有其它請求信息,則取出該其它請求信息并執(zhí)行與其對應(yīng)的處理,其后,從隊列中再次取出在隊列的末端再次登記的請求信息并且再次執(zhí)行圖10的數(shù)據(jù)讀取處理。因此,在輸入了來自后面的圖像處理模塊38的讀取請求但是可由作為讀取請求源的圖像處理模塊38讀取的有效數(shù)據(jù)的數(shù)據(jù)量小于單位讀取數(shù)據(jù)量并且可讀取的有效數(shù)據(jù)的末端不是作為處理對象的圖像數(shù)據(jù)的末端的情況下,存儲相應(yīng)的請求信息,重復(fù)地執(zhí)行數(shù)據(jù)讀取處理,直到可讀取的有效數(shù)據(jù)的數(shù)據(jù)量變得大于或等于單位讀取數(shù)據(jù)量或者可讀取的有效數(shù)據(jù)的末端就是作為處理對象的圖像數(shù)據(jù)的末端(即,直到步驟452或步驟454的判斷結(jié)果成為肯定的)。
盡管將在后面描述其細節(jié),但是當從緩沖器模塊40輸入了數(shù)據(jù)請求時,工作流管理部46A將處理請求輸入到作為數(shù)據(jù)請求源的緩沖器模塊40的前面的圖像處理模塊38(還參照圖15B中的(6))。由于由該處理請求的輸入觸發(fā)、并在前面的圖像處理模塊38的控制部38B執(zhí)行的處理,所以當前面的圖像處理模塊38變得能夠?qū)D像數(shù)據(jù)寫到緩沖器模塊40時,由于從前面的圖像處理模塊38輸入了寫入請求,所以執(zhí)行上述數(shù)據(jù)寫入操作(圖8),并且從前面的圖像處理模塊38將圖像數(shù)據(jù)寫到緩沖器模塊40的緩沖器40A(還參照圖15B的(7)、(8))。這樣,后面的圖像處理模塊38執(zhí)行圖像數(shù)據(jù)從緩沖器40A中的讀取(還參照圖15B的(9))。
如上所述,在與本實施例相關(guān)的緩沖器控制處理中,每次從前面的圖像處理模塊38輸入寫入請求或者從后面的圖像處理模塊38輸入讀取請求時,將輸入的請求登記在隊列中作為請求信息,并從隊列中逐個取出請求信息進行處理。因此,即使諸如在執(zhí)行數(shù)據(jù)寫入處理期間輸入了讀取請求或者在執(zhí)行數(shù)據(jù)讀取處理期間輸入了寫入請求的情況下,執(zhí)行停止對應(yīng)于輸入的請求的處理的執(zhí)行的獨占控制,直到正在執(zhí)行的處理完成并且出現(xiàn)了可執(zhí)行對應(yīng)于輸入的請求的處理的狀態(tài)為止。這樣,即使計算機10的CPU 12并行地執(zhí)行與構(gòu)成圖像處理部50的單獨的模塊相對應(yīng)的進程或線程,仍可避免由于將多個請求同時或者基本上同時輸入到單個緩沖器模塊40而出現(xiàn)的問題。因此,計算機10的CPU 12可以并行執(zhí)行對應(yīng)于單獨的模塊的進程或線程。當然,可將緩沖器模塊實現(xiàn)為通常的程序或?qū)ο蟆?br>
接下來,將給出對圖像處理模塊控制處理(圖13)的描述,每次從工作流管理部46A將處理請求輸入到構(gòu)成圖像處理部50的單獨的圖像處理模塊38時,單獨的圖像處理模塊38的各個控制部38B執(zhí)行該圖像處理模塊控制處理。在圖像處理模塊控制處理中,首先,在步驟284中,在存在其自身模塊的前面的模塊(緩沖器模塊40、或者圖像數(shù)據(jù)供應(yīng)部22、圖像處理模塊38等)的情況下,從該前面的模塊請求數(shù)據(jù)(圖像數(shù)據(jù)或者諸如分析之類的圖像處理的處理結(jié)果)。在下一步驟286中,判斷是否可從前面的模塊獲得數(shù)據(jù)。如果判斷結(jié)果是否定的,則在步驟288中,判斷是否已給出整個處理結(jié)束的通知。如果步驟288的判斷結(jié)果是否定的,則程序返回到步驟286,重復(fù)步驟286和288,直到可以從前面的模塊獲得數(shù)據(jù)。如果步驟286中的判斷結(jié)果是肯定的,則在步驟290中,執(zhí)行數(shù)據(jù)獲取處理,該處理從前面的模塊獲取數(shù)據(jù)。
這里,當其自身模塊的前面的模塊是緩沖器模塊40時,如果存在這樣的狀態(tài)可讀取的有效數(shù)據(jù)存儲在緩沖器模塊40的緩沖器40A中,該有效數(shù)據(jù)的量大于或等于單位讀取數(shù)據(jù)量;或者可讀取的該有效數(shù)據(jù)的末端與作為處理對象的圖像數(shù)據(jù)的末端重合,則當在先前的步驟284中請求數(shù)據(jù)(讀取請求)時,立即從該緩沖器模塊40通知讀取區(qū)的頭地址,并且請求讀取數(shù)據(jù)(見圖10的步驟462)。如果這些狀態(tài)都不存在,則緩沖器模塊40的前面的圖像處理模塊38將圖像數(shù)據(jù)寫到該緩沖器模塊40的緩沖器40A時,狀態(tài)改變到前述狀態(tài),其后,從緩沖器模塊40通知讀取區(qū)的頭地址,并且請求讀取數(shù)據(jù)(見圖10的步驟462)。這樣,步驟286的判斷結(jié)果是肯定的,程序進行到步驟290。在步驟290中,執(zhí)行數(shù)據(jù)獲取處理,該處理從前面的緩沖器模塊40已通知了其頭地址的讀取區(qū)中讀取單位讀取數(shù)據(jù)量(或比之少的數(shù)據(jù)量)的圖像數(shù)據(jù)(參照圖15A中的(3))。
此外,如果其自身模塊的前面的模塊是圖像數(shù)據(jù)供應(yīng)部22,則當在先前的步驟284中輸出數(shù)據(jù)請求時,立即從前一級的圖像數(shù)據(jù)供應(yīng)部22發(fā)出通知存在可獲得圖像數(shù)據(jù)的狀態(tài)。這樣,步驟286的判斷結(jié)果是肯定的,程序繼續(xù)進行到步驟290,在步驟290中,執(zhí)行圖像數(shù)據(jù)獲取處理,該處理從前一級的圖像數(shù)據(jù)供應(yīng)部22中獲得單位讀取數(shù)據(jù)量的圖像數(shù)據(jù)。此外,如果其自身模塊的前面的模塊是圖像處理模塊38,則在先前的步驟284中輸出數(shù)據(jù)請求(處理請求)時,如果存在前面的圖像處理模塊38可執(zhí)行圖像處理的狀態(tài),則由于輸入了寫入請求,所以給出了存在可獲得數(shù)據(jù)(圖像處理的結(jié)果)的狀態(tài)的通知。因此,步驟286的判斷結(jié)果是肯定的,程序進行到步驟290。由于前面的圖像處理模塊38給出了其中要寫入數(shù)據(jù)的緩沖區(qū)的地址的通知并請求寫入,所以執(zhí)行數(shù)據(jù)獲取處理,該數(shù)據(jù)獲取處理將從前面的圖像處理模塊38輸出的數(shù)據(jù)寫到該緩沖區(qū)。
在下一步驟292中,控制部38B判斷在其自身模塊的前一級是否連接有多個模塊。如果判斷結(jié)果是否定的,則程序繼續(xù)進行到步驟296而不執(zhí)行任何處理。如果判斷結(jié)果是肯定的,則程序繼續(xù)進行到步驟294,在步驟294中,判斷是否已從所有前面的模塊獲得了數(shù)據(jù)。如果步驟294中的判斷結(jié)果是否定的,則程序返回到步驟284,重復(fù)步驟284至步驟294,直到步驟294的判斷結(jié)果成為肯定的。當收集到從前面的模塊獲得的所有數(shù)據(jù)時,步驟292的判斷結(jié)果是否定的,或者步驟294的判斷結(jié)果是肯定的,程序繼續(xù)進行到步驟296。
接下來,在步驟296中,控制部38B向其自身模塊的后面的模塊請求用于數(shù)據(jù)輸出的區(qū)域。在步驟298中,重復(fù)進行判斷直到可獲得數(shù)據(jù)輸出區(qū)(即,直到通知了數(shù)據(jù)輸出區(qū)的頭地址)。應(yīng)該注意,如果后面的模塊是緩沖器模塊40,則通過將寫入請求輸出到該緩沖器模塊40來形成前述的對用于數(shù)據(jù)輸出的區(qū)域的請求。當可獲得數(shù)據(jù)輸出區(qū)(如果后面的模塊是緩沖器模塊40,則為從該緩沖器模塊40通知了其頭地址的寫入?yún)^(qū))時(參照圖15A中的(4)),在下一步驟300中,將由先前的數(shù)據(jù)獲取處理獲得的數(shù)據(jù)以及從后面的模塊獲得的數(shù)據(jù)輸出區(qū)(的頭地址)輸入到圖像處理引擎38A。對輸入的數(shù)據(jù)執(zhí)行預(yù)定的圖像處理(見圖15A的(5)),將處理后的數(shù)據(jù)寫到數(shù)據(jù)輸出區(qū)(見圖15A的(6))。當完成了單位讀取數(shù)據(jù)量的數(shù)據(jù)到圖像處理引擎38A的輸入并且將從圖像處理引擎38A輸出的數(shù)據(jù)都寫到數(shù)據(jù)輸出區(qū)時,在下一步驟302中,將輸出已完成通知給后面的模塊。
由于上述步驟284至步驟302,完成了在圖像處理模塊38處對單位處理數(shù)據(jù)量的數(shù)據(jù)的處理(即,單位處理)。存在這樣的情況在從工作流管理部46A輸入到圖像處理模塊38的處理請求中,由工作流管理部46A指定單位處理的執(zhí)行次數(shù)。因此,在步驟304中,判斷單位處理的執(zhí)行次數(shù)是否已達到由輸入的處理請求指示的執(zhí)行次數(shù)。如果指示的單位處理的執(zhí)行次數(shù)是一次,則該判斷結(jié)果無條件地是肯定的。但是,如果指示的單位處理的執(zhí)行次數(shù)大于或等于2,則程序返回到步驟284,重復(fù)步驟284至步驟304直到步驟304的判斷結(jié)果成為肯定的。當步驟304的判斷結(jié)果是肯定的時候,程序進行到步驟306。在步驟306中,通過將處理完成通知輸出到工作流管理部46A,控制部38B通知工作流管理部46A對應(yīng)于輸入的處理請求的處理已完成,并且圖像處理模塊控制處理結(jié)束。
此外,當由于每次從工作流管理部46A輸入處理請求時重復(fù)上述處理從而執(zhí)行處理直到作為處理對象的圖像數(shù)據(jù)的末端時,由于從前面的模塊給出了作為處理對象的圖像數(shù)據(jù)的末端的通知,所以步驟288的判斷結(jié)果成為肯定的,程序繼續(xù)進行到步驟308。在步驟308中,控制部38B將整個處理完成通知輸出到工作流管理部46A和后面的模塊,該通知意味著作為處理對象的圖像數(shù)據(jù)的處理完成。在下一步驟310中,執(zhí)行自身模塊刪除處理(后面會描述),圖像處理模塊控制處理結(jié)束。
應(yīng)該注意,執(zhí)行圖像分析處理(諸如斜交角檢測處理等)的圖像處理引擎38A通常被構(gòu)造為圖像處理結(jié)果不是以單位讀取數(shù)據(jù)量為單位進行輸出,而是在作為處理對象的所有圖像數(shù)據(jù)都已輸入之后才輸出圖像處理結(jié)果。在具有這樣的圖像處理引擎38A的圖像處理模塊38的控制部38B中,不執(zhí)行圖像處理模塊控制處理(圖13)的步驟296和298并且不執(zhí)行步驟300中的數(shù)據(jù)向后面的模塊的輸出,當由于作為處理對象的圖像數(shù)據(jù)被處理直到末端從而步驟288中的判斷結(jié)果為肯定時,將從圖像處理引擎38A輸出的數(shù)據(jù)(圖像處理結(jié)果)輸出到其自身模塊的外部(工作流管理部46A和應(yīng)用32)。然后,如果存在需要上述圖像處理結(jié)果的另一圖像處理模塊38(例如,基于斜交角檢測處理的結(jié)果執(zhí)行圖像旋轉(zhuǎn)處理的圖像處理模塊38等),則從工作流管理部46A或應(yīng)用32將前述圖像處理結(jié)果輸入到該圖像處理模塊38。
另一方面,在將塊單位處理指定為圖像處理的執(zhí)行形式的情況下,當由應(yīng)用32啟動工作流管理部46A時,執(zhí)行圖16A所示的塊單位控制處理1。同樣如上所述,在從工作流管理部46A將處理請求輸入到圖像處理部50的單獨的圖像處理模塊38的過程中,可指定單位處理的執(zhí)行次數(shù)。在塊單位控制處理1的步驟500中,對于各單獨的圖像處理模塊38,設(shè)置了在一次處理請求中指定的單位處理的執(zhí)行次數(shù)。可以確定每一次處理請求的單位處理的執(zhí)行次數(shù),從而例如使在作為處理對象的所有圖像數(shù)據(jù)被處理的時間期間輸入到單獨的圖像處理模塊38的處理請求的次數(shù)平均,或者可以根據(jù)其他標準來確定。然后,在下一步驟502中,將處理請求輸入到圖像處理部50的最后一級的圖像處理模塊38(還參照圖18的(1)),塊單位控制處理1結(jié)束。
這里,在圖18示出的圖像處理部50中,當從工作流管理部46A將處理請求輸入到最后一級的圖像處理模塊384時,圖像處理模塊384的控制部38B將讀取請求輸入到前面的緩沖器模塊403(參照圖18的(2))。此時,在緩沖器模塊403的緩沖器40A中沒有存儲可由圖像處理模塊384讀取的有效數(shù)據(jù)(圖像數(shù)據(jù))。因此,緩沖器模塊403的緩沖器控制部40B將數(shù)據(jù)請求輸入到工作流管理部46A(參照圖18的(3))。
在圖像處理的執(zhí)行形式是塊單位處理的情況下,每次從緩沖器模塊40輸入數(shù)據(jù)請求時,執(zhí)行圖16B示出的塊單位控制處理2。在該塊單位控制處理2中,在步驟504中,基于在圖4B所示的表中登記的信息,識別作為數(shù)據(jù)請求的輸入源的緩沖器模塊40(這里是圖像處理模塊403)的前面的圖像處理模塊38(這里是圖像處理模塊383),并將處理請求輸入到識別出的前面的圖像處理模塊38(參照圖18的(4)),處理結(jié)束。
當輸入了處理請求時,圖像處理模塊383的控制部38B將讀取請求輸入到前面的緩沖器模塊402(參照圖18的(5))。因為在緩沖器模塊402的緩沖器40A中也沒有存儲可讀取的圖像數(shù)據(jù),所以緩沖器模塊402的緩沖器控制部40B將數(shù)據(jù)請求輸入到工作流管理部46A(參照圖18的(6))。此外,當從緩沖器模塊402輸入了數(shù)據(jù)請求時,工作流管理部46A再次執(zhí)行上述塊單位控制處理2,并從而將處理請求輸入到前面的圖像處理模塊382(參照圖18的(7))。圖像處理模塊382的控制部38B將讀取請求輸入到前面的緩沖器模塊401(參照圖18的(8))。此外,因為在緩沖器模塊401的緩沖器40A中也沒有存儲可讀取的圖像數(shù)據(jù),所以緩沖器模塊401的緩沖器控制部40B也將數(shù)據(jù)請求輸入到工作流管理部46A(參照圖18的(9))。此外,當從緩沖器模塊401輸入了數(shù)據(jù)請求時,工作流管理部46A再次執(zhí)行上述塊單位控制處理2,并從而將處理請求輸入到前面的圖像處理模塊381(參照圖18的(10))。
這里,圖像處理模塊381的前面的模塊是圖像數(shù)據(jù)供應(yīng)部22。因此,通過將數(shù)據(jù)請求輸入到圖像數(shù)據(jù)供應(yīng)部22,圖像處理模塊381的控制部38B從圖像數(shù)據(jù)供應(yīng)部22獲得單位讀取數(shù)據(jù)量的圖像數(shù)據(jù)(參照圖18的(11))。將由圖像處理引擎38A對獲得的圖像數(shù)據(jù)執(zhí)行圖像處理獲得的圖像數(shù)據(jù)寫到后面的緩沖器模塊401的緩沖器40A(參照圖18的(12))。應(yīng)該注意,當圖像處理模塊381的控制部38B完成了將圖像數(shù)據(jù)寫到后面的緩沖器模塊401的緩沖器40A時,控制部38B將處理完成通知輸入到工作流管理部46A。
在圖像處理的執(zhí)行形式是塊單位處理的情況下,每次從圖像處理模塊38輸入了處理完成通知時,工作流管理部46A都執(zhí)行圖16C示出的塊單位控制處理3。在該塊單位控制處理3中,在步驟506中,判斷處理完成通知源是否是圖像處理部50的最后一級的圖像處理模塊38。如果在此情況下判斷結(jié)果是否定的,則處理結(jié)束而不執(zhí)行任何處理(對于從圖像處理模塊382、383輸入處理完成通知的情況也是這樣)。
此外,當寫入可被后面的圖像處理模塊382讀取并且其量大于或等于單位讀取數(shù)據(jù)量的有效數(shù)據(jù)時,緩沖器模塊401的緩沖器控制部40B請求圖像處理模塊382進行讀取。
與此相伴,圖像處理模塊382的控制部38B從緩沖器模塊401的緩沖器40A中讀取單位讀取數(shù)據(jù)量的圖像數(shù)據(jù)(參照圖18的(13)),圖像處理引擎38A對獲得的圖像數(shù)據(jù)執(zhí)行圖像處理。將以此方式獲得的圖像數(shù)據(jù)寫到后面的緩沖器模塊402的緩沖器40A(參照圖18的(14))。當寫入可被后面的圖像處理模塊383讀取并且其量大于或等于單位讀取數(shù)據(jù)量的有效數(shù)據(jù)時,緩沖器模塊402的緩沖器控制部40B請求圖像處理模塊383讀取。圖像處理模塊383的控制部38B從緩沖器模塊402的緩沖器40A中讀取單位讀取數(shù)據(jù)量的圖像數(shù)據(jù)(參照圖18的(15)),圖像處理引擎38A對獲得的圖像數(shù)據(jù)執(zhí)行圖像處理。將以此方式獲得的圖像數(shù)據(jù)寫到后面的緩沖器模塊403的緩沖器40A(參照圖18的(16))。
此外,當寫入可被后面的圖像處理模塊384讀取并且其量大于或等于單位讀取數(shù)據(jù)量的有效數(shù)據(jù)時,緩沖器模塊403的緩沖器控制部40B請求圖像處理模塊384讀取。與此相伴,圖像處理模塊384的控制部38B從緩沖器模塊403的緩沖器40A中讀取單位讀取數(shù)據(jù)量的圖像數(shù)據(jù)(參照圖18的(17)),圖像處理引擎38A對獲得的圖像數(shù)據(jù)執(zhí)行圖像處理。將以此方式獲得的圖像數(shù)據(jù)輸出到作為后面的模塊的圖像輸出部24(參照圖18的(18))。此外,當圖像處理模塊384的控制部38B完成了圖像數(shù)據(jù)向圖像輸出部24的寫入時,控制部38B將處理完成通知輸入到工作流管理部46A(參照圖18的(19))。在此情況下,前述塊單位控制處理3的步驟506中的判斷結(jié)果是肯定的,程序進行到步驟508,在步驟508中,再次將處理請求輸入到作為最后一級圖像處理模塊38的圖像處理模塊384,其后處理結(jié)束。
由于再次輸入到作為最后一級的圖像處理模塊384的處理請求,上述處理序列被再次重復(fù),并且以塊單位的執(zhí)行形式對作為處理對象的圖像數(shù)據(jù)連續(xù)地執(zhí)行圖像處理。當從圖像數(shù)據(jù)供應(yīng)部22提供的圖像數(shù)據(jù)到達其末端時,由前面的圖像處理模塊38連續(xù)地執(zhí)行整個處理結(jié)束通知從單獨的圖像處理模塊38到工作流管理部46A的輸入。
在圖像處理的執(zhí)行形式是塊單位處理的情況下,每次從圖像處理模塊38輸入了整個處理結(jié)束通知時,工作流管理部46A都執(zhí)行圖16D示出的塊單位控制處理4。在該塊單位控制處理4中,在步驟510中,判斷作為整個處理結(jié)束通知的輸入源的圖像處理模塊38是否是最后一級的圖像處理模塊38。如果該判斷結(jié)果是否定的,則處理結(jié)束而不執(zhí)行任何處理。在由于將所有的圖像數(shù)據(jù)(所述所有的圖像數(shù)據(jù)是通過對作為處理對象的圖像數(shù)據(jù)執(zhí)行必要的圖像處理而獲得的)輸出到圖像輸出部24從而從最后一級的圖像處理模塊38輸入了整個處理結(jié)束通知的情況下,步驟510的判斷結(jié)果是肯定的,程序繼續(xù)進行到步驟512。在步驟512中,通知應(yīng)用32圖像處理完成(還參照圖3的步驟180),塊單位控制處理結(jié)束。然后,已被通知了圖像處理完成的應(yīng)用32通知用戶圖像處理已完成(還參照圖3的步驟182)。
這樣,在塊單位處理中,將輸入到最后一級的圖像處理模塊38的處理請求回傳到前面的圖像處理模塊38。當處理請求到達最前級的圖像處理模塊38時,執(zhí)行一系列圖像處理,流程為在最前級的圖像處理模塊38執(zhí)行圖像處理,將數(shù)據(jù)寫到后面的緩沖器模塊40,并且如果寫入的數(shù)據(jù)足夠,則處理繼續(xù)進行到后面的模塊。
在將整幅圖像處理指定為圖像處理的執(zhí)行形式的情況下,當由應(yīng)用32啟動工作流管理部46A時,執(zhí)行圖17A示出的整幅圖像控制處理1。在整幅圖像控制處理1中,以與上述塊單位控制處理1(圖16A)相同的方式,針對各單獨的圖像處理模塊38,設(shè)置由一次處理請求指定的單位處理的執(zhí)行次數(shù)(步驟540)。在下一步驟542中,將處理請求輸入到圖像處理部50中最后一級的圖像處理模塊38(參照圖18的(1)),并且處理結(jié)束。此外,在圖像處理的執(zhí)行形式是整幅圖像處理的情況下,每次從緩沖器模塊40輸入數(shù)據(jù)請求時,工作流管理部46A執(zhí)行圖17B示出的整幅圖像控制處理2。在整幅圖像控制處理2中,以與上述塊單位控制處理2(圖16B)相同的方式,在步驟544中,基于在圖4B所示的表中登記的信息,識別作為數(shù)據(jù)請求的輸入源的緩沖器模塊40的前面的圖像處理模塊38,將處理請求輸入到識別出的前面的圖像處理模塊38,處理結(jié)束。
這樣,即使圖像處理的執(zhí)行形式是整幅圖像處理,當由應(yīng)用32啟動時工作流管理部46A執(zhí)行的處理以及每次從緩沖器模塊40輸入數(shù)據(jù)請求時工作流管理部46A執(zhí)行的處理,都與當圖像處理的執(zhí)行形式是塊單位處理時的處理相同。因此,同樣在整幅圖像處理中,在從工作流管理部46A將處理請求輸入到圖像處理部50的最后一級的圖像處理模塊38之后,如圖18的(2)至(10)所述,從處理請求所輸入至的圖像處理模塊38將數(shù)據(jù)請求輸入到前面的緩沖器模塊40,并隨著數(shù)據(jù)請求從該數(shù)據(jù)請求所輸入至的緩沖器模塊40輸入到工作流管理部46A,從該工作流管理部46A將處理請求輸出到該緩沖器模塊40的前面的圖像處理模塊,從圖像處理部50的最后一級的圖像處理模塊38這樣連續(xù)進行到在圖像處理部50的最前級的圖像處理模塊38。
此外,當從工作流管理部46A輸入了處理請求時,圖像處理部50的最前級的圖像處理模塊381從圖像數(shù)據(jù)供應(yīng)部22獲得單位讀取數(shù)據(jù)量的圖像數(shù)據(jù)(參照圖18的(11))。圖像處理模塊381將通過圖像處理引擎38A對獲得的圖像數(shù)據(jù)執(zhí)行圖像處理而獲得的圖像數(shù)據(jù)寫到后面的緩沖器模塊401的緩沖器40A(參照圖18的(12)),并將處理完成通知輸入到工作流管理部46A。在圖像處理的執(zhí)行形式是整幅圖像處理的情況下,每次從圖像處理模塊38輸入了處理完成通知時,工作流管理部46A執(zhí)行圖17C示出的整幅圖像控制處理3。在整幅圖像控制處理3中,在步驟546中,將處理請求再次輸入到作為處理完成通知源的圖像處理模塊38,處理結(jié)束。這樣,在整幅圖像控制處理中,在將處理完成通知輸入到工作流管理部46A的特定的圖像處理模塊38完成對作為處理對象的圖像數(shù)據(jù)的圖像處理之前的時間段期間,每次從該特定的圖像處理模塊38輸入處理完成通知時,僅僅將處理請求重復(fù)地輸入到該特定的圖像處理模塊38。
當圖像處理模塊381完成了作為處理對象的圖像數(shù)據(jù)的圖像處理時,將作為處理對象并且已經(jīng)在圖像處理模塊381經(jīng)過了圖像處理的所有圖像數(shù)據(jù)存儲在緩沖器模塊401的緩沖器40A中,從圖像處理模塊381將整個處理結(jié)束通知輸入到工作流管理部46A。在圖像處理的執(zhí)行形式是整幅圖像處理的情況下,每次從圖像處理模塊38輸入了整個處理結(jié)束通知時,工作流管理部46A執(zhí)行圖17D示出的整幅圖像控制處理4。在該整幅圖像控制處理4中,在步驟548中,判斷整個處理結(jié)束通知的源是否是圖像處理部50的最后一級的圖像處理模塊38。如果判斷結(jié)果是否定的,則程序繼續(xù)進行到步驟550,在步驟550中,基于在圖4B所示的表中登記的信息,識別在作為整個處理結(jié)束通知的源的圖像處理模塊38之后的下一圖像處理模塊38,將處理請求輸入到該識別出的下一圖像處理模塊38,處理結(jié)束。
這樣,在整幅圖像控制處理中,將輸入到最后一級的圖像處理模塊38的處理請求回傳到前面的圖像處理模塊38,并且在該處理請求到達最前級的圖像處理模塊38之后,僅將處理請求重復(fù)地輸入最前級的圖像處理模塊38。當在該圖像處理模塊38處對作為處理對象的所有圖像數(shù)據(jù)的圖像處理完成時,在下一圖像處理模塊38處執(zhí)行對作為處理對象的所有圖像數(shù)據(jù)的圖像處理。由于該處理按照后面的圖像處理模塊38的順序進行,所以執(zhí)行了一系列圖像處理操作。然后,當由于將所有的圖像數(shù)據(jù)(所述所有的圖像數(shù)據(jù)是通過對作為處理對象的圖像數(shù)據(jù)執(zhí)行需要的圖像處理而獲得的)輸出到圖像輸出部24從而從最后一級的圖像處理模塊38輸入整個處理結(jié)束通知時,整幅圖像控制處理4的步驟548的判斷結(jié)果是肯定的,程序繼續(xù)進行到步驟552。在步驟552中,通知應(yīng)用32圖像處理完成(還參照圖3的步驟180),整幅圖像控制處理結(jié)束。然后,已被通知圖像處理完成的應(yīng)用32通知用戶圖像處理完成(還參照圖3的步驟182)。
在圖17示出的整幅圖像控制處理中,在從圖像處理模塊輸入了整個處理結(jié)束通知時切換處理請求被重復(fù)地輸入至的圖像處理模塊38。但是,本發(fā)明不限于此??墒褂眠@樣的結(jié)構(gòu)在從其他圖像處理模塊38輸入了處理結(jié)束通知時切換處理請求被重復(fù)地輸入至的圖像處理模塊38。
此外,在以上描述中,由工作流管理部46A來執(zhí)行處理請求向最后一級的圖像處理模塊38的輸入。但是本發(fā)明不限于此,工作流管理部46A可擁有位于管線的最后一級或者位于有向無環(huán)圖的多個終點上的模塊并且執(zhí)行處理請求,或者應(yīng)用32可擁有這些模塊并執(zhí)行處理請求?;蛘?,如上述圖5B中的示例所示,在模塊生成部44的內(nèi)部,在將執(zhí)行斜交角檢測處理的圖像處理模塊和執(zhí)行圖像旋轉(zhuǎn)處理的圖像處理模塊組合從而構(gòu)成傾斜校正處理模塊的情況下,在生成圖像旋轉(zhuǎn)處理模塊時需要斜交角信息作為處理參數(shù)。因此,在傾斜校正模塊生成部的內(nèi)部,可采用這樣的方法將處理請求重復(fù)地施加到斜交角檢測處理模塊,處理整幅圖像,將作為處理結(jié)果而獲得的斜交角信息提供給圖像旋轉(zhuǎn)處理模塊作為處理參數(shù)。
接下來,將給出刪除圖像處理模塊38的描述,在已完成對作為處理對象的圖像數(shù)據(jù)進行的圖像處理之后執(zhí)行該刪除。在圖像處理模塊控制處理(圖13)的步驟308中,單獨的圖像處理模塊38的控制部38B將整個處理結(jié)束通知輸出到工作流管理部46A以及后面的模塊,其后,在步驟310中,執(zhí)行自身模塊刪除處理。
如圖14所示,在自身模塊刪除處理中,首先,在步驟320中,控制部38B請求資源管理部46B釋放在先前的步驟254(圖12)中保留的內(nèi)存區(qū)。這樣,由于在資源管理部46B處執(zhí)行的對內(nèi)存釋放請求的處理(圖2C),所以釋放了該內(nèi)存區(qū)。在下一步驟322中,判斷是否存在其自身模塊通過資源管理部46B而保留的、內(nèi)存之外的資源。如果判斷結(jié)果是否定的,則程序繼續(xù)進行到步驟326而不執(zhí)行任何處理。如果判斷結(jié)果是肯定的,則程序繼續(xù)進行到步驟324。在步驟324中,控制部38B將其自身模塊的標識信息通知給資源管理部46B,并請求釋放其自身模塊保留的、內(nèi)存之外的資源。這樣,由于資源管理部46B執(zhí)行的對資源釋放請求的處理(圖2E),所以釋放了該資源。
在自身模塊刪除處理(圖14)中,如果步驟322中的判斷結(jié)果是否定的,則程序進行到步驟326,或者如果在步驟324中向資源管理部46B請求釋放內(nèi)存之外的資源之后,從資源管理部46B給出了資源釋放完成的通知,則程序繼續(xù)進行到步驟326。在步驟326中,控制部38B將刪除通知(用于給出要執(zhí)行刪除其自身模塊的處理的通知)輸入到其自身模塊的前面的模塊、其自身模塊的后面的模塊以及工作流管理部46A。然后,在步驟328中,執(zhí)行刪除其自身模塊的處理,圖14的自身模塊刪除處理(即,圖13的步驟310)結(jié)束。應(yīng)該注意,可以通過結(jié)束對應(yīng)于其自身模塊的進程或線程或者刪除該對象來實現(xiàn)其自身模塊的刪除。
在由緩沖器模塊40的緩沖器控制部40B執(zhí)行的緩沖器控制處理(圖6)中,當從其自身模塊的前一級或后一級的圖像處理模塊38輸入了刪除通知時,步驟380中的判斷結(jié)果是肯定的,程序繼續(xù)進行到步驟390。在步驟390中,在存儲了作為刪除通知的輸入源的模塊之后,判斷是否從其自身模塊的前一級和后一級的所有模塊輸入了刪除通知。如果判斷結(jié)果是否定的,則程序返回到步驟378,同樣如上所述重復(fù)步驟378和380。此外,當從其自身模塊的前一級和后一級的所有模塊輸入了刪除通知時,步驟390中的判斷結(jié)果是肯定的,程序進行到步驟392。在步驟392中,由于將刪除通知輸入到了工作流管理部46A,所以給出了要執(zhí)行刪除其自身模塊的處理的通知。然后,在下一步驟394中,執(zhí)行刪除其自身模塊的處理,緩沖器控制處理(圖6)結(jié)束。
最后,將描述在圖像處理部50執(zhí)行圖像處理時發(fā)生錯誤的情況下的處理。當在圖像處理部50執(zhí)行圖像處理的同時發(fā)生錯誤時,處理管理部46的錯誤管理部46C執(zhí)行由于中斷而引起的圖19中示出的錯誤發(fā)生中斷處理。在該錯誤發(fā)生中斷處理中,首先,在步驟570中,獲得錯誤信息,諸如發(fā)生錯誤的類型以及發(fā)生地點等。在本實施例中,存儲器20存儲裝置環(huán)境信息,該裝置環(huán)境信息表示其中包含有計算機10的裝置的類型和結(jié)構(gòu)等,圖像處理程序組34實現(xiàn)在所述計算機10中。在下一步驟572中,從存儲器20等獲得該裝置環(huán)境信息,確定與由獲得的裝置環(huán)境信息表示的裝置環(huán)境相對應(yīng)的錯誤通知方法。
例如,如果計算機10是諸如PC之類的獨立的計算機,則提供可一次顯示各種信息的顯示器作為顯示器16。因此,可選擇諸如通過彈出式窗口等將在步驟570中獲得的錯誤信息的所有內(nèi)容顯示在顯示器16上這樣的錯誤通知方法作為所述錯誤通知方法。此外,例如,如果其中并入了計算機10的裝置是諸如復(fù)印機、打印機、傳真機、多功能裝置、掃描儀、照片打印機之類的裝置,則可在顯示器16上一次顯示的信息的量是有限的,但是可提供蜂鳴器等。從而,可以選擇這種通知方法通過鳴響蜂鳴器,給出發(fā)生了錯誤的通知,并且在步驟570獲得的錯誤信息之中,只將錯誤的類型顯示在顯示器16上,等等。然后,在步驟574中,通過在步驟572中確定的錯誤通知方法給出發(fā)生錯誤的通知,錯誤發(fā)生中斷處理結(jié)束。
這樣,在與本實施例相關(guān)的錯誤發(fā)生中斷處理中,從多種類型的錯誤通知方法之中選擇與裝置環(huán)境相對應(yīng)的錯誤通知方法,通過該選擇的錯誤通知方法給出發(fā)生了錯誤的通知。因此,通過在各種結(jié)構(gòu)的計算機10中實現(xiàn)與本發(fā)明相關(guān)的圖像處理程序組34,可應(yīng)用本發(fā)明,提高了本發(fā)明的適用性。此外,無需根據(jù)其中實現(xiàn)有圖像處理程序組34的計算機10的結(jié)構(gòu)(即,根據(jù)其是獨立的計算機還是在各種類型的裝置中的任一裝置中實現(xiàn)的計算機等)而執(zhí)行設(shè)置改變操作,諸如在錯誤發(fā)生之類時切換處理。因此,減輕了用于實現(xiàn)的操作的負擔。
這里,雖然以中斷處理為前提解釋了錯誤處理,但是錯誤處理不限于中斷處理。例如,可使用以下結(jié)構(gòu)當錯誤發(fā)生時,該模塊將錯誤信息和通知給錯誤管理部46C,并且返回狀態(tài)碼,該狀態(tài)碼表示對于其后的處理指令不能執(zhí)行處理。接收到該信息的處理管理部46將該信息返回給應(yīng)用32。應(yīng)用32從處理管理部46的錯誤管理部46C接收到錯誤信息,并且基于該錯誤信息,應(yīng)用32自己執(zhí)行諸如顯示或蜂鳴之類的處理。
以上已給出對示例的描述,在該示例中,是從后面的圖像處理模塊38將讀取請求輸入到緩沖器模塊40的。在可被作為讀取請求源的圖像處理模塊38讀取的有效數(shù)據(jù)的數(shù)據(jù)量小于單位讀取數(shù)據(jù)量并且可讀取的有效數(shù)據(jù)的末端不是作為處理對象的圖像數(shù)據(jù)的末端的情況下,從緩沖器模塊40重復(fù)地將數(shù)據(jù)請求輸入到工作流管理部46A,直到可讀取的有效數(shù)據(jù)的數(shù)據(jù)量大于或等于單位讀取數(shù)據(jù)量或者檢測到可讀取的有效數(shù)據(jù)的末端就是作為處理對象的圖像數(shù)據(jù)的末端為止。但是,本發(fā)明不限于此。在上述情況下,緩沖器模塊40可僅將數(shù)據(jù)請求輸入到工作流管理部46A一次,并且當可讀取的有效數(shù)據(jù)的數(shù)據(jù)量變得大于或等于單位讀取數(shù)據(jù)量時,或者當檢測到可讀取的有效數(shù)據(jù)的末端就是作為處理對象的圖像數(shù)據(jù)的末端時,緩沖器模塊40可將積累完成通知輸入到工作流管理部46A。因而,在從緩沖器模塊40輸入了數(shù)據(jù)請求后直到輸入了積累完成通知為止的時間段期間,工作流管理部46A可將處理請求重復(fù)地輸入到該緩沖器模塊40的前面的圖像處理模塊38。
此外,以上作為示例描述了一個實施例,在該實施例中,在從后面的圖像處理模塊38輸入了讀取請求并且沒有將可被作為讀取請求源的圖像處理模塊38讀取的有效數(shù)據(jù)存儲在其自身模塊的緩沖器40A中的情況下,緩沖器控制部40B將數(shù)據(jù)請求輸入到工作流管理部46A。但是,本發(fā)明不限于此,在上述情況下,緩沖控制部40B可直接將數(shù)據(jù)請求輸入到前面的圖像處理模塊38。在該實施例中,在圖像處理的執(zhí)行形式是塊單位處理的情況下的處理序列在圖20中示出。從圖20中還可清楚看出,在該實施例中,工作流管理部46A將處理請求僅僅輸入到圖像處理部50中最后一級的圖像處理模塊38就足夠了,因而,在工作流管理部46A的處理是簡單的。
此外,上面描述了一個實施例作為塊單位的圖像處理的示例,在該實施例中,首先,工作流管理部46A將處理請求輸入到最后一級的圖像處理模塊38,并且該處理請求作為數(shù)據(jù)請求或處理請求被依次傳送到前面的模塊。但是,本發(fā)明不限于此。還可將處理請求或數(shù)據(jù)請求從前面的模塊連續(xù)地傳送到后面的模塊,并且執(zhí)行以塊為單位的圖像處理。例如,這可如下實現(xiàn)。將緩沖器模塊40的緩沖器控制部40B構(gòu)成為每次其自身模塊的前面的圖像處理模塊38將圖像數(shù)據(jù)寫到緩沖器40A時,如果可被后面的圖像處理模塊38讀取的有效數(shù)據(jù)的數(shù)據(jù)量小于單位讀取數(shù)據(jù)量并且可讀取的有效數(shù)據(jù)的末端不是作為處理對象的圖像數(shù)據(jù)的末端,則緩沖器控制部40B將數(shù)據(jù)請求輸入到工作流管理部46A。另一方面,當可讀取的有效數(shù)據(jù)的數(shù)據(jù)量大于或等于單位讀取數(shù)據(jù)量時,或者當檢測到可讀取的有效數(shù)據(jù)的末端是作為處理對象的圖像數(shù)據(jù)的末端時,緩沖器控制部40B將積累完成通知輸入到工作流管理部46A。而且,將工作流管理部46A構(gòu)成為在將處理請求輸入到圖像處理部50的最后一級的圖像處理模塊38之后,每次從任意緩沖器模塊40輸入數(shù)據(jù)請求時,工作流管理部46A將處理請求輸入到作為數(shù)據(jù)請求源的緩沖器模塊40的前面的圖像處理模塊38。每次從任意緩沖器模塊40輸入了積累完成通知時,工作流管理部46A將處理請求輸入到該緩沖器模塊40的后面的圖像處理模塊38。此外,在上文中,可將來自緩沖器模塊40的數(shù)據(jù)請求作為處理請求直接輸入到該緩沖器模塊40的前面的圖像處理模塊38,并且可將來自緩沖器模塊40的積累完成通知作為處理請求直接輸入到該緩沖器模塊40的后面的圖像處理模塊38。
而且,上面描述了一個實施例,在該實施例中,對于緩沖器模塊40,由前面的圖像處理模塊38預(yù)先設(shè)置單位寫入數(shù)據(jù)量,并且由后面的圖像處理模塊38預(yù)先設(shè)置單位讀取數(shù)據(jù)量。但是,本發(fā)明不限于此。每次將數(shù)據(jù)寫到緩沖器模塊40或者從緩沖器模塊40讀取數(shù)據(jù)時,可由圖像處理模塊38通知寫入或者讀取的數(shù)據(jù)量。
在以上結(jié)構(gòu)中,每次將寫入請求或讀取請求輸入到緩沖器模塊40時,將輸入的請求作為請求信息登記在隊列中,從隊列中逐個取出請求信息并進行處理。這樣,實現(xiàn)了獨占控制,其中,在輸入寫入請求時,如果正在執(zhí)行從緩沖器40A中讀取數(shù)據(jù),則在該數(shù)據(jù)讀取完成之后,執(zhí)行對應(yīng)于該寫入請求的數(shù)據(jù)寫入處理,并且在輸入讀取請求時,如果正在執(zhí)行向緩沖器40A寫入數(shù)據(jù),則在數(shù)據(jù)寫入完成之后,執(zhí)行對應(yīng)于該讀取請求的數(shù)據(jù)讀取處理。但是,本發(fā)明不限于此。例如,可執(zhí)行將單位緩沖區(qū)作為單位的獨占控制。即,在輸入寫入請求時,如果正在針對緩沖器40A內(nèi)的、該寫入請求中的寫入對象的單位緩沖區(qū)執(zhí)行對數(shù)據(jù)的讀取,則在該數(shù)據(jù)讀取完成之后,執(zhí)行對應(yīng)于該寫入請求的數(shù)據(jù)寫入處理。此外,在輸入讀取請求時,如果正在針對緩沖器40A內(nèi)的、該讀取請求中的讀取對象的單位緩沖區(qū)執(zhí)行數(shù)據(jù)寫入,則在該數(shù)據(jù)寫入完成之后,執(zhí)行對應(yīng)于該讀取請求的數(shù)據(jù)讀取處理。通過例如在各單獨的單位緩沖區(qū)提供隊列并執(zhí)行獨占控制等可實現(xiàn)將單位緩沖區(qū)作為單獨的獨占控制。
此外,上面描述了一個示例,其中,在其程序被登記在模塊庫36中的單獨的圖像處理模塊38之中,對應(yīng)于單位讀取數(shù)據(jù)量和單位寫入數(shù)據(jù)量相同的圖像處理模塊38的控制部38B的程序是通用的。但是,本發(fā)明不限于此。例如,可將對應(yīng)于控制部38B的程序分為對應(yīng)于第一控制部的程序,該第一控制部從前面的模塊獲得圖像數(shù)據(jù)并將其輸入到圖像處理引擎38A;對應(yīng)于第二控制部的程序,該第二控制部將從圖像處理引擎38A輸出的數(shù)據(jù)輸出到后面的模塊;以及對應(yīng)于公共控制部的程序,該公共控制部執(zhí)行不依賴于單位讀取數(shù)據(jù)量、單位處理數(shù)據(jù)量或單位寫入數(shù)據(jù)量的控制(例如,與工作流管理部46A進行通信等)。在所有的圖像處理模塊,對應(yīng)于公共控制部的程序可通用。單位讀取數(shù)據(jù)量相同的圖像處理模塊38可通用對應(yīng)于第一控制部的程序。單位寫入數(shù)據(jù)量相同的圖像處理模塊38可通用對應(yīng)于第二控制部的程序。
因為構(gòu)成圖像處理部50的單獨的模塊的實例是程序,所以圖像處理部50的圖像處理實際上是通過CPU 12實現(xiàn)的。這里,可使用以下系統(tǒng)(所謂的輪叫(round robin)系統(tǒng))將與構(gòu)成圖像處理部50的單獨的圖像處理模塊38相對應(yīng)的程序作為進程、線程或?qū)ο蟮怯浽陉犃兄?,所述進程、線程或?qū)ο笫荂PU 12的執(zhí)行對象。每次CPU 12從該隊列中取出登記在該隊列中并且對應(yīng)于特定的圖像處理模塊的程序時,判斷是否可從該特定的圖像處理模塊38的前面的模塊獲得單位處理數(shù)據(jù)量的圖像數(shù)據(jù)。僅在判斷出可獲得單位處理數(shù)據(jù)量的圖像數(shù)據(jù)的情況下,從該特定的圖像處理模塊38的前面的模塊獲得單位處理數(shù)據(jù)量的圖像數(shù)據(jù)。對所獲得的單位處理數(shù)據(jù)量的圖像數(shù)據(jù)執(zhí)行預(yù)定的圖像處理(與特定的圖像處理模塊38的圖像處理引擎38A相對應(yīng)的處理)。執(zhí)行將經(jīng)過了預(yù)定的圖像處理的圖像數(shù)據(jù)或預(yù)定的圖像處理的處理結(jié)果輸出到其自身模塊的后面的模塊的處理。其后,如果沒有完成對作為處理對象的整幅圖像的處理,則將取出的對應(yīng)于特定的圖像處理模塊的程序作為執(zhí)行對象的進程、線程或?qū)ο笤俅蔚怯浽谠撽犃兄?。由于CPU 12重復(fù)這些單位圖像處理,所以圖像處理部50處理作為處理對象的整幅圖像。
如上所述,本發(fā)明的一方面提供一種圖像處理裝置,該裝置包括圖像處理部,該圖像處理部具有(A)一個或更多個圖像處理模塊,各圖像處理模塊具有(1)圖像處理引擎,用于以預(yù)先設(shè)置的單位處理數(shù)據(jù)量為單位對圖像數(shù)據(jù)執(zhí)行預(yù)定的圖像處理;和(2)控制部,用于以圖像處理引擎以單位處理數(shù)據(jù)量為單位執(zhí)行處理所需的數(shù)據(jù)量單位,將從其自身模塊的前一級獲得的圖像數(shù)據(jù)輸入到圖像處理引擎,并且將經(jīng)過了由圖像處理引擎進行的預(yù)定的圖像處理的圖像數(shù)據(jù)、或者預(yù)定的圖像處理的處理結(jié)果輸出到其自身模塊的后一級,從多種類型的圖像處理模塊(其中,圖像處理引擎執(zhí)行的圖像處理的類型和內(nèi)容彼此不同)中選擇所述一個或更多個圖像處理模塊;和(B)具有用于存儲圖像數(shù)據(jù)的緩沖器的一個或更多個緩沖器模塊,所述圖像處理部通過以管線形式或有向無環(huán)圖形式相連的單獨模塊構(gòu)成,從而該緩沖器模塊被連接在選擇的各圖像處理模塊的前一級或后一級中的至少一級,其中,圖像處理模塊的控制部(a)在緩沖器模塊被連接在其自身模塊的前一級的情況下,以在前面的緩沖器模塊預(yù)先設(shè)置的、或者每次讀取圖像數(shù)據(jù)時指定的讀取數(shù)據(jù)量為單位,讀取存儲在前面的緩沖器模塊的緩沖器中的圖像數(shù)據(jù),并將讀取的圖像數(shù)據(jù)作為單位處理數(shù)據(jù)量的圖像數(shù)據(jù)輸入到圖像處理引擎;以及(b)在緩沖器模塊被連接在其自身模塊的后一級的情況下,以作為后面的緩沖器的寫數(shù)據(jù)量而預(yù)先設(shè)置的寫入數(shù)據(jù)量為單位,或者以每次寫入圖像數(shù)據(jù)時指定的寫入數(shù)據(jù)量為單位,對通過圖像處理引擎對輸入的圖像數(shù)據(jù)執(zhí)行預(yù)定的圖像處理而獲得的圖像數(shù)據(jù)執(zhí)行將其寫到后面的緩沖器模塊的緩沖器的處理。
與本發(fā)明相關(guān)的圖像處理模塊具有圖像處理引擎和控制部。圖像處理引擎以預(yù)先設(shè)置的單位處理數(shù)據(jù)量為單位對圖像數(shù)據(jù)執(zhí)行預(yù)定的圖像處理。控制部以為了圖像處理引擎以單位處理數(shù)據(jù)量為單位執(zhí)行處理所需的數(shù)據(jù)量單位,將從其自身模塊的前一級獲得的圖像數(shù)據(jù)輸入到圖像處理引擎,并且將經(jīng)過了由圖像處理引擎進行的預(yù)定的圖像處理的圖像數(shù)據(jù)、或者預(yù)定的圖像處理的處理結(jié)果輸出到其自身模塊的后一級。在本發(fā)明中,準備有多種類型的圖像處理模塊,其中,圖像處理引擎執(zhí)行的圖像處理的類型和內(nèi)容彼此不同。從所述多種類型的圖像處理模塊中選擇一個或更多個圖像處理模塊。圖像處理部通過以管線形式或有向無環(huán)圖形式相連的多個單獨模塊構(gòu)成,從而具有用于存儲圖像數(shù)據(jù)的緩沖器的一個或更多個緩沖器模塊被連接在所選擇的各圖像處理模塊的前一級或后一級中的至少一級。為了構(gòu)建圖像處理部而選擇的圖像數(shù)據(jù)模塊可以是各自不同的圖像處理模塊,或者可以選擇成使得多個圖像處理模塊的部分或整體彼此重合。
與本發(fā)明相關(guān)的緩沖器模塊具有用于存儲圖像數(shù)據(jù)的緩沖器,以及緩沖器控制部。在其自身模塊的前級連接有圖像處理模塊的情況下,該緩沖器控制部使得將從所述前級的圖像處理模塊輸出的圖像數(shù)據(jù)寫入所述緩沖器上的存儲區(qū)域中,該存儲區(qū)域能夠存儲對其自身模塊預(yù)先設(shè)定的或者在每一次輸出圖像數(shù)據(jù)時通知的寫入數(shù)據(jù)量的數(shù)據(jù)。此外,在其自身模塊的后級連接有圖像處理模塊的情況下,該緩沖器控制部執(zhí)行下述的處理,即,使得所述后級圖像處理模塊以對其自身模塊預(yù)先設(shè)定的或者在每一次請求圖像數(shù)據(jù)時指定的讀取數(shù)據(jù)量為單位來讀取存儲在所述緩沖器中的圖像數(shù)據(jù)。
上述單位處理數(shù)據(jù)量、寫入數(shù)據(jù)量和讀取數(shù)據(jù)量可以是圖像的一行,或者可以是包括圖像的多行、整個圖像、圖像的一個像素等在內(nèi)的任意字節(jié)數(shù)中的任意一個。此外,由所述圖像處理模塊寫入所述緩沖器模塊的緩沖器的圖像數(shù)據(jù)可以是未壓縮的圖像數(shù)據(jù),或者可以是經(jīng)過某種編碼方法進行了編碼并進行了壓縮的圖像數(shù)據(jù)。所述單位處理數(shù)據(jù)量和單位寫入數(shù)據(jù)量可以相同或者可以不同。此外,使得圖像數(shù)據(jù)被寫入到緩沖器上的存儲區(qū)域的處理的示例是將該存儲區(qū)域的地址等通知給其自身模塊的前級圖像處理模塊的處理。此外,使得從緩沖器讀取圖像數(shù)據(jù)的處理可以通過將其中存儲有作為讀取對象的圖像數(shù)據(jù)的存儲區(qū)域(該存儲區(qū)域可以是所述后級圖像處理模塊不能對所存儲的內(nèi)容進行改變的存儲區(qū)域,或者可以是所述后級圖像處理模塊可以對所存儲的內(nèi)容進行改變的存儲區(qū)域)的地址通知給其自身模塊的后級圖像處理模塊來執(zhí)行,或者可以通過將作為讀取對象的數(shù)據(jù)復(fù)制到從該后級圖像處理模塊通知的地址的存儲區(qū)域來執(zhí)行。
在本發(fā)明中,所述圖像處理部由以管線形式或有向無環(huán)圖形式連接的多個單獨模塊構(gòu)成,從而具有用于存儲圖像數(shù)據(jù)的緩沖器的緩沖器模塊連接在被選擇的各個圖像處理模塊的前級和后級中的至少一個上。此外,與本發(fā)明相關(guān)的處理管理部通過在所述圖像處理部的各個圖像處理模塊處使得重復(fù)進行下述的處理來使所述圖像處理部對作為處理對象的整個圖像進行處理將從其自身模塊的前級獲取的圖像數(shù)據(jù)輸入給所述圖像處理引擎,并將由所述圖像處理引擎進行了預(yù)定圖像處理的圖像數(shù)據(jù),或者該預(yù)定圖像處理的處理結(jié)果輸出給其自身模塊的后級。
這樣,在本發(fā)明中,連接在緩沖器模塊的前級的圖像處理模塊可以對將圖像數(shù)據(jù)寫入后級緩沖器模塊的緩沖器時的寫入數(shù)據(jù)量進行任意設(shè)定。此外,連接在緩沖器模塊的后級的圖像處理模塊可以對從后級緩沖器模塊的緩沖器讀取圖像數(shù)據(jù)時的讀取數(shù)據(jù)量進行任意設(shè)定。因此,緩沖器模塊的前級的圖像處理模塊無需使圖像數(shù)據(jù)的輸出單位與固定確定的基準值一致。緩沖器模塊的后級圖像處理模塊也無需使圖像數(shù)據(jù)的獲取單位與該基準值一致。因此,可以根據(jù)各個圖像處理模塊的圖像處理引擎所執(zhí)行的圖像處理的類型等對該圖像處理引擎處的單位處理數(shù)據(jù)量進行優(yōu)化,并且可以實現(xiàn)各個圖像處理模塊的圖像處理引擎所執(zhí)行的圖像處理的優(yōu)化(提高速度、改善圖像質(zhì)量等)。
此外,圖像數(shù)據(jù)在多個圖像處理模塊(其之間插設(shè)有緩沖器模塊)之間的接收和傳送可以通過緩沖器模塊的緩沖器來執(zhí)行。因此,在圖像處理模塊之間接收和傳送圖像數(shù)據(jù)時,無需進行復(fù)雜的控制,例如在二者之間進行通信以及對定時進行調(diào)整等。此外,處理管理部可以通過使得所述圖像處理部的各個圖像處理模塊重復(fù)執(zhí)行下述的處理來對作為處理對象的整個圖像進行處理將從其自身模塊的前級獲取的圖像數(shù)據(jù)輸入給所述圖像處理引擎,并將由所述圖像處理引擎進行了預(yù)定圖像處理的圖像數(shù)據(jù),或者該預(yù)定圖像處理的處理結(jié)果輸出給其自身模塊的后級的處理。因此,根據(jù)本發(fā)明,可以組合任意圖像處理模塊,并執(zhí)行所期望的圖像處理,而不會導致各個圖像處理模塊的結(jié)構(gòu)變得復(fù)雜。
權(quán)利要求
1.一種圖像處理設(shè)備,其包括圖像處理部,該圖像處理部具有(A)一個或更多個圖像處理模塊,每一個圖像處理模塊都具有(1)圖像處理引擎,其以單位處理數(shù)據(jù)量為單位對圖像數(shù)據(jù)進行預(yù)定的圖像處理,以及(2)控制部,其以所述圖像處理引擎以所述單位處理數(shù)據(jù)量為單位進行處理所需的數(shù)據(jù)量單位,來輸入從其自身模塊的前級獲取的圖像數(shù)據(jù),并將由所述圖像處理引擎進行了預(yù)定圖像處理的圖像數(shù)據(jù),或者該預(yù)定圖像處理的處理結(jié)果輸出給其自身模塊的后級,(B)一個或更多個緩沖器模塊,所述緩沖器模塊具有用于存儲圖像數(shù)據(jù)的緩沖器,以及緩沖器控制部;處理管理部,該處理管理部使得所述圖像處理部通過在所述圖像處理部的各個圖像處理模塊處進行處理,來對作為處理對象的整個圖像進行處理。
2.根據(jù)權(quán)利要求1所述的圖像處理設(shè)備,其中,所述一個或更多個圖像處理模塊是從多種類型的圖像處理模塊中選擇的,在該多種類型的圖像處理模塊中由所述圖像處理引擎執(zhí)行的圖像處理的類型或內(nèi)容彼此不同。
3.根據(jù)權(quán)利要求1所述的圖像處理設(shè)備,其中,所述圖像處理部由以管線形式或有向無環(huán)圖形式連接的多個單獨模塊構(gòu)成,從而所述緩沖器模塊連接在被選擇的各個圖像處理模塊的前級和后級中的至少一個上。
4.根據(jù)權(quán)利要求1所述的圖像處理設(shè)備,其中,所述緩沖器控制部在其自身模塊的前級連接有圖像處理模塊的情況下執(zhí)行下述的處理使得將從所述前級圖像處理模塊輸出的圖像數(shù)據(jù)寫入所述緩沖器上的存儲區(qū)域中,該存儲區(qū)域能夠存儲由所述前級圖像處理模塊對其自身模塊預(yù)先設(shè)定的或者在每一次輸出圖像數(shù)據(jù)時通知的寫入數(shù)據(jù)量的數(shù)據(jù)。
5.根據(jù)權(quán)利要求1所述的圖像處理設(shè)備,其中,所述緩沖器控制部在其自身模塊的后級連接有圖像處理模塊的情況下執(zhí)行下述的處理使得所述后級圖像處理模塊以由所述后級圖像處理模塊對其自身模塊預(yù)先設(shè)定的或者在每一次請求圖像數(shù)據(jù)時指定的讀取數(shù)據(jù)量為單位來讀取存儲在所述緩沖器中的圖像數(shù)據(jù)。
6.根據(jù)權(quán)利要求1所述的圖像處理設(shè)備,其中,所述處理管理部通過在所述圖像處理部的各個圖像處理模塊處使得重復(fù)進行下述的處理來使所述圖像處理部對作為處理對象的整個圖像進行處理將從其自身模塊的前級獲取的圖像數(shù)據(jù)輸入所述圖像處理引擎,并將由所述圖像處理引擎進行了預(yù)定圖像處理的圖像數(shù)據(jù),或者該預(yù)定圖像處理的處理結(jié)果輸出給其自身模塊的后級。
7.根據(jù)權(quán)利要求1所述的圖像處理設(shè)備,其中,所述單位處理數(shù)據(jù)量是根據(jù)操作環(huán)境或者所述圖像處理引擎所執(zhí)行的所述預(yù)定圖像處理的類型而預(yù)先設(shè)定的。
8.根據(jù)權(quán)利要求1所述的圖像處理設(shè)備,其中,所述圖像處理模塊的控制部在其自身模塊的后級連接有所述緩沖器模塊的情況下,將通過所述圖像處理引擎執(zhí)行所述預(yù)定圖像處理而獲得的圖像數(shù)據(jù)的數(shù)據(jù)量預(yù)先設(shè)定為連接在其自身模塊的后級的所述緩沖器模塊的寫入數(shù)據(jù)量,此后,每當由于所述圖像處理引擎執(zhí)行所述圖像處理而獲得所設(shè)定的寫入數(shù)據(jù)量的圖像數(shù)據(jù)時,所述圖像處理模塊的所述控制部就執(zhí)行將該寫入數(shù)據(jù)量的圖像數(shù)據(jù)寫入所述緩沖器上的存儲區(qū)域中的處理。
9.根據(jù)權(quán)利要求1所述的圖像處理設(shè)備,其中,所述圖像處理模塊的控制部在其自身模塊的前級連接有所述緩沖器模塊的情況下,將所述單位處理數(shù)據(jù)量預(yù)先設(shè)定為所述前級緩沖器模塊的讀取數(shù)據(jù)量。
10.根據(jù)權(quán)利要求1所述的圖像處理設(shè)備,其中每當輸入處理請求時,所述圖像處理模塊的所述控制部就執(zhí)行下述的單位處理,即,將從其自身模塊的前級獲取的單位處理數(shù)據(jù)量的圖像數(shù)據(jù)輸入所述圖像處理引擎,并將由所述圖像處理引擎進行了預(yù)定圖像處理的圖像數(shù)據(jù),或者該預(yù)定圖像處理的處理結(jié)果輸出給其自身模塊的后級,并且所述處理管理部通過以預(yù)先設(shè)定的順序向所述圖像處理部的各個圖像處理模塊的控制部重復(fù)地輸入處理請求,使得在各個圖像處理模塊處重復(fù)執(zhí)行所述單位處理。
11.根據(jù)權(quán)利要求10所述的圖像處理設(shè)備,其中,所述處理管理部向所述圖像處理模塊的控制部輸入下述的處理請求作為所述處理請求,該處理請求使所述圖像處理模塊的控制部執(zhí)行所述單位處理預(yù)定多次。
12.根據(jù)權(quán)利要求10所述的圖像處理設(shè)備,其中每當所述圖像處理模塊的控制部開始所述單位處理時,所述圖像處理模塊的控制部就從其自身模塊的前級請求圖像數(shù)據(jù),所述緩沖器模塊的所述緩沖器控制部在其自身模塊的前級和后級連接有圖像處理模塊,并且從所述后級圖像處理模塊請求圖像數(shù)據(jù)的情況下,判斷可以讀取的圖像數(shù)據(jù)是否以大于或等于所述讀取數(shù)據(jù)量的量存儲在所述緩沖器中,并且如果可以讀取且存儲在所述緩沖器中的圖像數(shù)據(jù)少于所述讀取數(shù)據(jù)量,則所述緩沖器控制部向所述處理管理部輸出數(shù)據(jù)請求,并且在所述處理管理部向所述圖像處理部的最下游圖像處理模塊輸入了所述處理請求之后,每當從任意緩沖器模塊輸入數(shù)據(jù)請求時,所述處理管理部就通過向連接在作為數(shù)據(jù)請求輸出源的緩沖器模塊的前級的圖像處理模塊的控制部輸入所述處理請求,來使得在所述各個圖像處理模塊處重復(fù)執(zhí)行所述單位處理。
13.根據(jù)權(quán)利要求10所述的圖像處理設(shè)備,其中每當所述圖像處理模塊的控制部開始所述單位處理時,所述圖像處理模塊的所述控制部就從其自身模塊的前級請求圖像數(shù)據(jù),并且在所述處理管理部在其自身模塊的前級和后級連接有圖像處理模塊的各個緩沖器模塊處向所述圖像處理部的最下游圖像處理模塊輸入了所述處理請求之后,在從所述后級圖像處理模塊請求圖像數(shù)據(jù)并且可以讀取且存儲在所述緩沖器中的圖像數(shù)據(jù)少于所述讀取數(shù)據(jù)量的情況下,所述處理管理部通過使得由所述緩沖器控制部輸出的數(shù)據(jù)請求作為所述處理請求輸入連接在所述各個緩沖器模塊的前級的圖像處理模塊的控制部,來使得在所述各個圖像處理模塊處重復(fù)執(zhí)行所述單位處理。
14.根據(jù)權(quán)利要求12所述的圖像處理設(shè)備,其中,在可以讀取且存儲在輸出所述數(shù)據(jù)請求的緩沖器模塊的緩沖器中的圖像數(shù)據(jù)變得大于或等于所述讀取數(shù)據(jù)量之前的時間段內(nèi),所述處理管理部向連接在所述緩沖器模塊的前級的圖像處理模塊的控制部重復(fù)地輸入所述處理請求,或者所述處理管理部使得所述緩沖器模塊的緩沖器控制部重復(fù)地輸出下述的數(shù)據(jù)請求,該數(shù)據(jù)請求被作為所述處理請求輸入給連接在所述前級的圖像處理模塊的控制部。
15.根據(jù)權(quán)利要求10所述的圖像處理設(shè)備,其中,在其自身模塊的前級和后級連接有圖像處理模塊的情況下,每當所述前級圖像處理模塊向所述緩沖器寫入圖像數(shù)據(jù)時,如果存儲在所述緩沖器中且可以由所述后級圖像處理模塊讀取的圖像數(shù)據(jù)少于所述讀取數(shù)據(jù)量,則所述緩沖器模塊的緩沖器控制部就向所述處理管理部輸出數(shù)據(jù)請求,而當存儲在所述緩沖器中且可以由所述后級圖像處理模塊讀取的圖像數(shù)據(jù)變得大于或等于所述讀取數(shù)據(jù)量時,向所述處理管理部輸出數(shù)據(jù)累積完成,并且所述處理管理部將所述處理請求輸入所述圖像處理部的最上游圖像處理模塊,此后,每當從任意緩沖器模塊輸入所述數(shù)據(jù)請求時,所述處理管理部就將所述處理請求輸入連接在作為數(shù)據(jù)請求輸出源的緩沖模塊的前級的圖像處理模塊的控制部,并且每當從任意緩沖器模塊輸入所述數(shù)據(jù)累積完成時,所述處理管理部將所述處理請求輸入連接在作為數(shù)據(jù)累積完成輸出源的緩沖器模塊的后級的圖像處理模塊的控制部,并且所述處理管理部由此使得在各個圖像處理模塊處重復(fù)執(zhí)行所述單位處理。
16.根據(jù)權(quán)利要求10所述的圖像處理設(shè)備,其中,所述處理管理部將所述處理請求輸入所述圖像處理部的最下游圖像處理模塊,此后,在其自身模塊的前級和后級的連接有圖像處理模塊的各個緩沖器模塊處,在所述前級圖像處理模塊向所述緩沖器寫入圖像數(shù)據(jù)并且存儲在所述緩沖器中且可以由所述后級圖像處理模塊讀取的圖像數(shù)據(jù)少于所述讀取數(shù)據(jù)量的情況下,所述處理管理部使得由所述緩沖器控制部輸出的數(shù)據(jù)請求作為所述處理請求被輸入連接在各個緩沖器模塊的前級的圖像處理模塊的控制部,而在所述前級圖像處理模塊向所述緩沖器寫入圖像數(shù)據(jù)并且存儲在所述緩沖器中且可以由所述后級圖像處理模塊讀取的圖像數(shù)據(jù)大于或等于所述讀取數(shù)據(jù)量的情況下,所述處理管理部使得從所述緩沖器控制部輸出的數(shù)據(jù)累積完成作為所述處理請求被輸入連接在各個緩沖器模塊的后級的圖像處理模塊的控制部,并且所述處理管理部由此使得在各個圖像處理模塊處重復(fù)執(zhí)行所述單位處理。
17.根據(jù)權(quán)利要求10所述的圖像處理設(shè)備,其中,在從特定圖像處理模塊輸出與作為處理對象的整個圖像相對應(yīng)的圖像數(shù)據(jù)之前,所述處理管理部按照從所述圖像處理部的最上游圖像處理模塊開始的順序,通過將所述處理請求重復(fù)地輸入給所述特定圖像處理模塊的控制部,來連續(xù)執(zhí)行下述的處理,即,使得重復(fù)執(zhí)行所述單位處理。
18.根據(jù)權(quán)利要求1所述的圖像處理設(shè)備,其中所述圖像處理模塊由所述圖像處理設(shè)備的CPU來實現(xiàn),該CPU執(zhí)行與所述圖像處理模塊相對應(yīng)的程序,所述處理管理部將與構(gòu)成所述圖像處理部的各個圖像處理模塊相對應(yīng)的程序作為進程或線程登記在隊列中,所述線程或進程是所述CPU執(zhí)行的對象,每當所述CPU從所述隊列中取出與特定圖像處理模塊相對應(yīng)且登記在所述隊列中的程序時,由所述CPU判斷是否可以從所述特定圖像處理模塊的前級獲取單位處理數(shù)據(jù)量的圖像數(shù)據(jù),并且僅在判定為可以獲取所述單位處理數(shù)據(jù)量的圖像數(shù)據(jù)的情況下,才通過使得重復(fù)其中從所述特定圖像處理模塊的前級獲取所述單位處理數(shù)據(jù)量的圖像數(shù)據(jù)的單位圖像處理,由所述圖像處理部對作為處理對象的所述整個圖像進行處理,并且所述圖像處理引擎對所獲取的單位處理數(shù)據(jù)量的圖像數(shù)據(jù)進行所述預(yù)定圖像處理,并執(zhí)行將經(jīng)過所述預(yù)定圖像處理的圖像數(shù)據(jù)或者該預(yù)定圖像處理的處理結(jié)果輸出給其自身模塊的后級的處理,此后,如果沒有完成對作為處理對象的整個圖像的處理,則將所取出的程序作為進程或線程重新登記在所述隊列中,所述進程或線程是執(zhí)行對象。
19.根據(jù)權(quán)利要求1所述的圖像處理設(shè)備,還包括構(gòu)造部,其根據(jù)作為處理對象的圖像的屬性和指定要執(zhí)行的圖像處理的類型的處理參數(shù)來構(gòu)造所述圖像處理部,所述構(gòu)造部向所述處理管理部通知所構(gòu)造的圖像處理部的信息,其中,所述處理管理部根據(jù)來自所述構(gòu)造部的通知對構(gòu)成所述圖像處理部的圖像處理模塊進行識別。
20.一種圖像處理方法,其通過具有圖像處理部的圖像處理設(shè)備來進行圖像處理,該圖像處理部具有(A)一個或更多個圖像處理模塊,每一個圖像處理模塊都具有(1)圖像處理引擎,其以預(yù)先設(shè)定的單位處理數(shù)據(jù)量為單位對圖像數(shù)據(jù)進行預(yù)定的圖像處理;以及(2)控制部,其以所述圖像處理引擎以所述單位處理數(shù)據(jù)量為單位進行處理所需的數(shù)據(jù)量單位,來輸入從其自身模塊的前級獲取的圖像數(shù)據(jù),并將由所述圖像處理引擎進行了預(yù)定圖像處理的圖像數(shù)據(jù),或者該預(yù)定圖像處理的處理結(jié)果輸出給其自身模塊的后級,所述一個或更多個圖像處理模塊是從多種類型的圖像處理模塊中選擇的,在該多種類型的圖像處理模塊中由所述圖像處理引擎執(zhí)行的圖像處理的類型或內(nèi)容彼此不同;以及(B)一個或更多個緩沖器模塊,并且所述圖像處理部由以管線形式或有向無環(huán)圖形式連接的多個單獨模塊構(gòu)成,從而所述緩沖器模塊連接在被選擇的各個圖像處理模塊的前級和后級中的至少一個上,并且所述緩沖器模塊具有用于存儲圖像數(shù)據(jù)的緩沖器,以及緩沖器控制部,所述方法包括以下步驟所述緩沖器控制部在其自身模塊的前級連接有圖像處理模塊的情況下執(zhí)行下述的處理,即,使得將從所述前級圖像處理模塊輸出的圖像數(shù)據(jù)寫入所述緩沖器上的存儲區(qū)域中,該存儲區(qū)域能夠存儲由所述前級圖像處理模塊對其自身模塊預(yù)先設(shè)定的或者在每一次輸出圖像數(shù)據(jù)時通知的寫入數(shù)據(jù)量的數(shù)據(jù),所述緩沖器控制部在其自身模塊的后級連接有圖像處理模塊的情況下執(zhí)行下述的處理,使得所述后級圖像處理模塊以由所述后級圖像處理模塊對其自身模塊預(yù)先設(shè)定的或者在每一次請求圖像數(shù)據(jù)時指定的讀取數(shù)據(jù)量為單位來讀取存儲在所述緩沖器中的圖像數(shù)據(jù);以及所述緩沖器控制部通過在所述圖像處理部的各個圖像處理模塊處使得重復(fù)進行下述的處理來使所述圖像處理部對作為處理對象的整個圖像進行處理將從其自身模塊的前級獲取的圖像數(shù)據(jù)輸入所述圖像處理引擎,并將由所述圖像處理引擎進行了預(yù)定圖像處理的圖像數(shù)據(jù),或者該預(yù)定圖像處理的處理結(jié)果輸出給其自身模塊的后級。
21.一種計算機可讀存儲介質(zhì),其存儲有用于使得計算機用作具有圖像處理部的圖像處理設(shè)備的圖像處理程序,該圖像處理部具有(A)一個或更多個圖像處理模塊,每一個圖像處理模塊都具有(1)圖像處理引擎,其以預(yù)先設(shè)定的單位處理數(shù)據(jù)量為單位對圖像數(shù)據(jù)進行預(yù)定的圖像處理;以及(2)控制部,其以所述圖像處理引擎以所述單位處理數(shù)據(jù)量為單位進行處理所需的數(shù)據(jù)量單位,來輸入從其自身模塊的前級獲取的圖像數(shù)據(jù),并將由所述圖像處理引擎進行了預(yù)定圖像處理的圖像數(shù)據(jù),或者該預(yù)定圖像處理的處理結(jié)果輸出給其自身模塊的后級,所述一個或更多個圖像處理模塊是從多種類型的圖像處理模塊中選擇的,在該多種類型的圖像處理模塊中由所述圖像處理引擎執(zhí)行的圖像處理的類型或內(nèi)容彼此不同;以及(B)一個或更多個緩沖器模塊,并且所述圖像處理部由以管線形式或有向無環(huán)圖形式連接的多個單獨模塊構(gòu)成,從而所述緩沖器模塊連接在被選擇的各個圖像處理模塊的前級和后級中的至少一個上,并且所述緩沖器模塊具有用于存儲圖像數(shù)據(jù)的緩沖器,以及緩沖器控制部,其中所述緩沖器控制部在其自身模塊的前級連接有圖像處理模塊的情況下執(zhí)行下述的處理,即,使得將從所述前級圖像處理模塊輸出的圖像數(shù)據(jù)寫入所述緩沖器上的存儲區(qū)域中,該存儲區(qū)域能夠存儲由所述前級圖像處理模塊對其自身模塊預(yù)先設(shè)定的或者在每一次輸出圖像數(shù)據(jù)時通知的寫入數(shù)據(jù)量的數(shù)據(jù),所述緩沖器控制部在其自身模塊的后級連接有圖像處理模塊的情況下執(zhí)行下述的處理,即,使得所述后級圖像處理模塊以由所述后級圖像處理模塊對其自身模塊預(yù)先設(shè)定的或者在每一次請求圖像數(shù)據(jù)時指定的讀取數(shù)據(jù)量為單位來讀取存儲在所述緩沖器中的圖像數(shù)據(jù);并且所述緩沖器控制部通過在所述圖像處理部的各個圖像處理模塊處使得重復(fù)進行下述的處理來使所述圖像處理部對作為處理對象的整個圖像進行處理將從其自身模塊的前級獲取的圖像數(shù)據(jù)輸入所述圖像處理引擎,并將由所述圖像處理引擎進行了預(yù)定圖像處理的圖像數(shù)據(jù),或者該預(yù)定圖像處理的處理結(jié)果輸出給其自身模塊的后級。
全文摘要
一種圖像處理設(shè)備,其具有圖像處理部和處理管理部。該圖像處理部具有一個或更多個圖像處理模塊和一個或更多個緩沖器模塊。每一個圖像處理模塊都具有圖像處理引擎和控制部。圖像處理引擎以單位處理數(shù)據(jù)量為單位對圖像數(shù)據(jù)進行預(yù)定的圖像處理。控制部以所述圖像處理引擎以所述單位處理數(shù)據(jù)量為單位進行處理所需的數(shù)據(jù)量單位,來輸入從其自身模塊的前級獲取的圖像數(shù)據(jù)。另外,所述控制部將由所述圖像處理引擎進行了預(yù)定圖像處理的圖像數(shù)據(jù),或者該預(yù)定圖像處理的處理結(jié)果輸出給其自身模塊的后級。
文檔編號G06T1/20GK1873685SQ20061008852
公開日2006年12月6日 申請日期2006年6月1日 優(yōu)先權(quán)日2005年6月3日
發(fā)明者關(guān)范顕, 長尾隆, 熊澤幸夫, 金子康彥, 金子順一 申請人:富士施樂株式會社, 富士膠片株式會社