CN103366338A - 图像处理装置和图像处理方法 - Google Patents
图像处理装置和图像处理方法 Download PDFInfo
- Publication number
- CN103366338A CN103366338A CN2013100618616A CN201310061861A CN103366338A CN 103366338 A CN103366338 A CN 103366338A CN 2013100618616 A CN2013100618616 A CN 2013100618616A CN 201310061861 A CN201310061861 A CN 201310061861A CN 103366338 A CN103366338 A CN 103366338A
- Authority
- CN
- China
- Prior art keywords
- image processing
- module
- image
- processing module
- processed
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Processing (AREA)
- Storing Facsimile Image Data (AREA)
- Image Input (AREA)
Abstract
本发明提供一种图像处理装置和图像处理方法。在图像处理中使用不同于由前级的图像处理模块在图像处理中使用的处理器的处理器的图像处理模块被连接在后级处的情况下,图像处理装置执行传递处理,该传递处理将已经由前级的图像处理模块写入到缓冲器中的图像数据传递到在对应于后级的图像处理模块在图像处理中使用的处理器的存储器空间中保留的用于传递的缓冲器,并且该图像处理装置执行处理,该处理促使后级的图像处理模块读出被传递至用于传递的缓冲器的图像数据。
Description
技术领域
本发明涉及一种图像处理装置和一种图像处理方法。
背景技术
日本专利申请特开(JP-A)No.2006-338500和日本专利申请特开(JP-A)No.2006-338502公开了图像处理装置,在该图像处理装置中,图像处理部通过连接图像处理模块和用于存储图像数据的缓冲器模块而构成,并且归因于图像处理模块在从前级的模块获取的图像数据上执行图像处理并且将已处理的图像数据输出至后级的模块,该图像处理部执行期望的图像处理。此外,这些文档也公开了如下技术:在这些技术中,缓冲器模块输出请求到资源管理部并且促使用于存储图像数据的存储器区域被保留或被释放。
为了提高计算能力和获得处理高速,除在传统上使用的CPU(中央处理单位)之外,还存在对使用诸如GPU(图形处理单位)等的加速器的需求,所述加速器的专长是图像处理,即,用以通过利用多个处理器来执行处理。此外,最近几年中,装备有多个CPU的处理装置已经越来越罕见。
在使用单个处理器的装置中,也使用了单个存储器空间。然而,在使用多个处理器的装置中,存在多个处理器共同使用一个存储器空间的情况,以及多个处理器使用在物理上或虚拟地相互不同的存储器空间的情况。
在将在JP-A No.2006-338500和JP-A No.2006-338502中公开的技术应用到具有多个使用在物理上或虚拟地相互不同的存储器空间的处理器的装置并且通过每个模块设置一个处理器来构成图像处理部的情况下,情况并非总是相应的连接的模块使用相同的处理器和存储器空间。在这种情况下,期望有效地执行图像数据的移交,使得图像处理部的处理速度不下降。然而,有效地执行图像处理部的图像数据的移交的技术未在JP-A No.2006-338500或JP-A No.2006-338502中公开,所述图像处理部通过使用具有多个使用相互不同的存储器空间的处理器的装置而构成。
发明内容
考虑到上文描述的情况,做出了本发明,并且本发明的目的是:在由具有多个使用相互不同的存储器空间的处理器的装置实现的图像处理装置中,提供一种可以有效地促使在多个连接的模块之间移交图像数据的图像处理装置和图像处理方法。
本发明的一方面是图像处理装置,其具有:执行图像处理的多个图像处理模块;至少一个缓冲器模块;以及图像处理部,在该图像处理部中,缓冲器模块被连接在图像处理模块的前级和后级中的至少一个处,其中缓冲器模块执行控制,该控制促使前级的图像处理模块将图像数据写入到缓冲器中,该缓冲器被保留在对应于前级的图像处理模块在图像处理中使用的处理器的存储器空间中,并且,在在图像处理中使用不同于在图像处理中由前级的图像处理模块使用的处理器的处理器的图像处理模块被连接在后级处的情况下,缓冲器模块执行传递处理,该传递处理将已经由前级的图像处理模块写入到缓冲器中的图像数据传递到被保留在对应于后级的图像处理模块在图像处理中使用的处理器的存储器空间中的用于传递的缓冲器,并且缓冲器模块执行处理,该处理促使后级的图像处理模块读出被传递至用于传递的缓冲器的图像数据,并且,在在图像处理中使用与在图像处理中由前级的图像处理模块使用的处理器相同的处理器的图像处理模块被连接在后级处的情况下,缓冲器模块执行处理,该处理促使后级的图像处理模块读出已经由前级的图像处理模块写入到缓冲器中的图像数据。
在该图像处理装置中,缓冲器模块执行控制,该控制使得前级的图像处理模块将图像数据写入到缓冲器中,该缓冲器被保留在对应于前级的图像处理模块在图像处理中使用的处理器的存储器空间中。前级的图像处理模块意指连接到那个缓冲器模块并且为在那个缓冲器模块前面的一个的图像处理模块。
此外,缓冲器模块根据后级的图像处理模块在图像处理中使用的处理器来区别处理。后级的图像处理模块意指连接到那个缓冲器模块并且为在那个缓冲器模块后面的一个的图像处理模块。
具体地,在在图像处理中使用不同于由前级的图像处理模块在图像处理中使用的处理器的处理器的图像处理模块被连接在后级处的情况下,缓冲器模块执行传递处理,该传递处理将已经由前级的图像处理模块写入到上述缓冲器中的图像数据传递到被保留在对应于后级的图像处理模块在图像处理中使用的处理器的存储器空间中的用于传递的缓冲器,并且缓冲器模块执行处理,该处理促使后级的图像处理模块读出被传递至用于传递的缓冲器的图像数据。
此外,在在图像处理中使用与由前级的图像处理模块在图像处理中使用的处理器相同的处理器的图像处理模块被连接在后级处的情况下,缓冲器模块执行处理,该处理促使后级的图像处理模块读出已经由前级的图像处理模块写入到缓冲器中的图像数据。
归因于这样的控制,在由装备有多个使用相互不同的存储器空间的处理器的装置实现的图像处理装置中,可以有效地执行在多个连接的模块之间的图像数据的移交。
本发明的另一方面是图像处理装置,其具有:执行图像处理的多个图像处理模块;至少一个缓冲器模块;以及图像处理部,在该图像处理部中,缓冲器模块被连接在图像处理模块的前级和后级中的至少一个处,其中缓冲器模块执行控制,该控制促使前级的图像处理模块将图像数据写入到缓冲器中,该缓冲器被保留在对应于前级的图像处理模块在图像处理中使用的处理器的存储器空间中,并且,缓冲器模块执行处理,该处理促使后级的图像处理模块读出已经被写入到缓冲器中的图像数据,并且在在图像处理中使用不同于由图像处理模块本身使用的处理器的处理器的图像处理模块被连接在前级的缓冲器模块的前级处的情况下,所述图像处理模块读出已经被写入到前级的缓冲器模块的缓冲器中的图像数据,并且所述图像处理模块执行传递处理,该传递处理将读出的图像数据传递到被保留在对应于由其本身在图像处理中使用的处理器的存储器空间中的用于传递的缓冲器,并且之后,所述图像处理模块在被传递至用于传递的缓冲器的图像数据上执行图像处理,并且,在在图像处理中使用与由图像处理模块本身在图像处理中使用的处理器相同的处理器的图像处理模块被连接在前级的缓冲器模块的前级处的情况下,所述图像处理模块读出已经被写入到前级的缓冲器模块的缓冲器中的图像数据,并且执行图像处理。
在该图像处理装置中,图像处理模块根据前级的缓冲器模块在图像处理中使用的处理器来区别处理。在此处,前级的缓冲器模块意指连接到图像处理模块并且为在图像处理模块前面一个的缓冲器模块。
注意,缓冲器模块执行控制,该控制促使前级的图像处理模块将图像数据写入到被保留在对应于前级的图像处理模块在图像处理中使用的处理器的存储器空间中的缓冲器,并且缓冲器模块执行处理,该处理促使后级的图像处理模块读出已经被写入缓冲器中的图像数据。
在图像处理模块处,在在图像处理中使用不同于由所述图像处理模块本身使用的处理器的处理器的图像处理模块被连接在前级的缓冲器模块的前级处的情况下,所述图像处理模块读出已经被写入到前级的缓冲器模块的缓冲器中的图像数据,并且执行传递处理,该传递处理将读出的图像数据传递到被保留在对应于由其本身在图像处理中使用的处理器的存储器空间中的用于传递的缓冲器,并且之后,所述图像处理模块在被传递至用于传递的缓冲器的图像数据上执行图像处理。
此外,在图像处理模块处,在在图像处理中使用与由所述图像处理模块本身在图像处理中使用的处理器相同的处理器的图像处理模块被连接在前级的缓冲器模块的前级处的情况下,图像处理模块读出已经被写入到前级的缓冲器模块的缓冲器中的图像数据,并且执行图像处理。
归因于这样的控制,在由装备有多个使用相互不同的存储器空间的处理器的装置实现的图像处理装置中,可以有效地执行在多个连接的模块之间的图像数据的移交。
在上文描述的方面的任一个的图像处理装置中,为是图像处理部的处理对象的图像数据的各个处理单位,设置先入先出存储部,其将图像处理模块和缓冲器模块执行的处理登记作为任务,并且,归因于传递处理的任务和被登记在为各个图像数据设置的存储部中的图像处理的任务,对应于图像处理模块和在图像处理模块的后级处的缓冲器模块的组合并且相对于彼此异步操作的多个线程中的各个,促使将要执行任务的处理器以任务被登记在存储部中的顺序执行任务,并且,在传递处理被执行的时间期间,该多个线程中的各个促使除由传递处理传递中的图像数据以外的图像数据的图像处理被执行,并且图像处理的任务和传递处理的任务被并行执行。
具有上文描述的结构中的任一个的图像处理装置可以进一步具有:模块产生部,该模块产生部产生被包括在图像处理部中的图像处理模块和缓冲器模块,其中,在当模块产生部产生图像处理模块时,模块产生部根据图像处理模块将要执行的图像处理的内容来确定由图像处理模块在图像处理中将使用的处理器,或确定图像处理模块的处理器,使得使用不同的处理器的模块在前后所连接的位置的数量小于阈值。
本发明的另一方面是由图像处理装置执行的图像处理方法,该图像处理装置包括:执行图像处理的多个图像处理模块;至少一个缓冲器模块;以及图像处理部,在该图像处理部中,缓冲器模块被连接到图像处理模块的前级和后级中的至少一个处,所述图像处理方法包括:缓冲器模块执行控制,控制促使前级的图像处理模块将图像数据写入到缓冲器中,该缓冲器被保留在对应于前级的图像处理模块在图像处理中使用的处理器的存储器空间中;在在图像处理中使用不同于由前级的图像处理模块在图像处理中使用的处理器的处理器的图像处理模块被连接在后级处的情况下,缓冲器模块执行传递处理,该传递处理将已经由前级的图像处理模块写入到缓冲器中的图像数据传递到被保留在对应于后级的图像处理模块在图像处理中使用的处理器的存储器空间中的用于传递的缓冲器,并且缓冲器模块执行处理,该处理促使后级的图像处理模块读出被传递至用于传递的缓冲器的图像数据,并且,在在图像处理中使用与由前级的图像处理模块在图像处理中使用的处理器相同的处理器的图像处理模块被连接在后级处的情况下,缓冲器模块执行处理,该处理促使后级的图像处理模块读出已经由前级的图像处理模块写入到缓冲器中的图像数据。
本发明的又一方面是由图像处理装置执行的图像处理方法,该图像处理装置包括:执行图像处理的多个图像处理模块;至少一个缓冲器模块;以及图像处理部,在该图像处理部中,缓冲器模块被连接到图像处理模块的前级和后级中的至少一个处,所述图像处理方法包括:缓冲器模块执行控制,该控制促使前级的图像处理模块将图像数据写入到缓冲器中,该缓冲器被保留在对应于前级的图像处理模块在图像处理中使用的处理器的存储器空间中,并且缓冲器模块执行处理,该处理促使后级的图像处理模块读出已经被写入到缓冲器中的图像数据;在在图像处理中使用不同于由图像处理模块本身使用的处理器的处理器的图像处理模块被连接在前级的缓冲器模块的前级处的情况下,图像处理模块读出已经被写入到前级的缓冲器模块的缓冲器中的图像数据,并且图像处理模块执行传递处理,该传递处理将读出的图像数据传递到被保留在对应于由其本身在图像处理中使用的处理器的存储器空间中的用于传递的缓冲器,并且之后,图像处理模块在被传递至用于传递的缓冲器的图像数据上执行图像处理,并且,在在图像处理中使用与由图像处理模块本身在图像处理中使用的处理器相同的处理器的图像处理模块被连接在前级的缓冲器模块的前级处的情况下,所述图像处理模块读出已经被写入到前级的缓冲器模块的缓冲器中的图像数据,并且执行图像处理。
如上文所描述的,本发明具有如下极佳效果:在由具有多个使用相互不同的存储器空间的处理器的装置实现的图像处理装置中,可以有效地执行在多个连接的模块之间的图像数据的移交。
附图说明
图1是示出关于当前示例性实施例的计算机(图像处理装置)的示意结构的框图;
图2A至图2E是示出由资源管理部执行的处理的内容的流程图,其中图2A示出初始化处理的内容,图2B示出在第三管理方法中在存储器保留请求时的处理的内容,图2C示出在第三管理方法中在存储器释放请求时的处理的内容,图2D示出在资源保留请求时的处理的内容,并且图2E示出在资源释放请求时的处理的内容;
图3是用于通过应用程序解释处理的序列图;
图4A是示出由模块产生部执行的模块产生处理的内容的流程图,并且图4B是解释工作流程管理部的表的示意图;
图5是示出图像处理部的结构示例的框图;
图6是示出由缓冲器模块的缓冲器控制部执行的缓冲器控制处理的内容的流程图;
图7是示出由缓冲器模块的缓冲器控制部执行的请求接收中断处理的内容的流程图;
图8A和图8B是示出由缓冲器模块的缓冲器控制部执行的数据写入处理的内容的流程图;
图9是解释在为写入对象的图像数据跨布于用于存储的多个单位缓冲器区域的情况下的处理的示意图;
图10A和图10B是示出由缓冲器模块的缓冲器控制部执行的数据读出处理的内容的流程图;
图11是示出在为读出对象的图像数据跨布于用于存储的多个单位缓冲器区域的情况下的处理的示意图;
图12是示出由图像处理模块的控制部执行的图像处理模块初始化处理的内容的流程图;
图13是示出由图像处理模块的控制部执行的图像处理模块控制处理的内容的流程图;
图14是示出由图像处理模块的控制部执行的自模块删除处理的内容的流程图;
图15A是示出图像处理模块的示意结构和由图像处理模块执行的处理的框图,并且图15B是示出缓冲器模块的示意结构和由缓冲器模块执行的处理的框图;
图16是示出由处理管理部执行的块单位控制处理的内容的流程图;
图17是示出由处理管理部执行的页面单位控制处理的内容的流程图;
图18是解释块单位处理和页面单位处理的流的示意图;
图19是示出由处理管理部执行的偏差产生中断处理的内容的流程图;
图20是解释在缓冲器模块直接从前级的图像处理模块请求图像数据的方面中块单位处理的流的示意图;
图21是解释在应用当图像处理部通过使用单个处理器构成时移交图像数据的方法作为当图像处理部通过使用多个处理器构成时移交图像数据的方法的情况下出现的问题的说明图;
图22是解释在缓冲器模块处执行的传递处理的说明图;
图23A是示意性地解释在前级模块处和后级模块处使用的处理器不同的情况下移交图像数据的方法的图示,并且图23B是示意性地解释在前级模块处和后级模块处使用的处理器相同的情况下移交图像数据的方法的图示;
图24A和图24B是示出在图像处理模块执行传递处理的情况下由缓冲器模块执行的数据读出处理的内容的流程图;
图25A和图25B是示出在图像处理模块执行传递处理的情况下由图像处理模块执行的图像处理模块控制处理的内容的流程图;并且
图26是示意性地解释通过使用线程和队列实现的传递处理的隐蔽的说明图。
具体实施方式
在下文中参考附图详细地描述本发明的示例性实施例的例子。图1示出关于本发明的可以被用作图像处理装置的计算机10。注意,该计算机10可以被内置于任意图像操纵装置,该图像操纵装置必须在其内部执行图像处理,诸如复印机、打印机、传真机、具有所有这些功能的多功能装置、扫描仪、相片打印机、等。或,计算机10可以是诸如个人计算机(PC)等的独立的计算机,或可以是被内置于诸如PDA(个人数字助理)、蜂窝电话等的便携式装置中的计算机。
计算机10具有第一控制部11、第二控制部51、显示部16、操作部18、用作存储装置的存储部20、图像数据供应部22、以及图像输出部24,并且这些部经总线26相互连接。第一控制部11具有用作第一处理器的CPU(中央处理单位)12、以及第一存储器14。CPU12作为计算机10的主处理器运转。第二控制部51具有用作第二处理器的GPU(图形处理单位)52、以及第二存储器54。GPU52是专门进行图像处理的处理器。注意,在此处,使第二处理器为GPU52,但是第二处理器并不限于GPU,并且可以是例如CPU。注意,在CPU12和GPU52之间执行的信息互换也可以被构成为由例如已知的处理器间通信来执行。
在计算机10被内置于诸如上文提及的图像操纵装置的情况下,由LCD等形成的显示面板以及设置在图像操纵装置处的十键等可以被用作显示部16和操作部18。此外,在计算机10是独立的计算机的情况下,被连接到计算机的显示器和键盘、鼠标等可以被用作显示部16和操作部18。而且,HDD(硬盘驱动器)作为存储部20是适当的,但是作为替代,也可以使用诸如闪存存储器等的另一非易失存储装置。
此外,满足的是,图像数据供应部22为可以供应作为处理的对象的图像数据的部。例如,读取被记录在诸如纸或感光胶片等记录材料上的图像并且输出图像数据的图像读取部、或经由通信线路从外面接收图像数据的接收部、或存储图像数据的图像存储部(第一存储器14、第二存储器54、或稍后描述的存储部20)等可以被用作图像数据供应部22。此外,满足的是,图像输出部24为输出已经过图像处理的图像数据或该图像数据所表达的图像的部。例如,将由图像数据表达的图像记录到诸如纸或光敏材料等的记录材料上的图像记录部、或将由图像数据表达的图像显示在显示器等上的显示部、或将图像数据写入到记录介质的写入装置、或经由通信线路传输图像数据的传输部可以被用作图像输出部24。此外,图像输出部24可以是仅仅存储已经过图像处理的图像数据的图像存储部(稍后描述的第一存储器14、第二存储器54、或存储部20)。
如图1中所示,存储部20分别存储如由CPU12执行的各种类型的程序:掌管资源的管理、利用CPU12进行的程序的执行的管理、在计算机10和外部之间的通信等的操作系统30的程序;使得计算机10用作关于本发明的图像处理装置的图像处理程序组34;以及各种类型的应用32的程序(在图1中示为应用程序组32),其促使由执行上述图像处理程序组的CPU12实现的图像处理装置来执行期望的图像处理。
图像处理程序组34是被开发以能够在诸如各种类型的图像操纵装置、便携式装置、PC等的各种类型的装置(平台)处共同使用的程序,用于减轻在开发上文描述的各种类型的图像操纵装置和便携式装置时的开发负担的目的,并且也用于减轻在开发能够被用在PC等处的图像处理程序的开发负担的目的。图像处理程序组34对应于有关本发明的图像处理程序。根据来自应用程序32的构造指令,由图像处理程序组34实现的图像处理装置构成执行应用程序32指示的图像处理的图像处理部,并且根据来自应用程序32的执行指令,该图像处理装置通过图像处理部执行图像处理(其细节在稍后描述)。图像处理程序组34为应用程序32提供用于指示执行期望的图像处理的图像处理部(期望的结构的图像处理部)的构造以及用于指示由构造的图像处理部的图像处理的执行的接口。因此,即使在最近开发必须在其内部执行图像处理的任意装置等的情况下,关于执行图像处理的程序的开发,满足的是,仅开发应用程序32,其通过使用上述接口,该应用程序32促使图像处理程序组34执行在该装置处需要的图像处理,并且不需要新开发实际上执行图像处理的程序。因此,可以减轻开发负担。
此外,如上文所描述的,根据来自应用程序32的构造指令,由图像处理程序组34实现的图像处理装置构造用于执行由应用程序32指示的图像处理的图像处理部,并且该图像处理装置通过构造的图像处理部执行图像处理。因此,例如,也在为图像处理的对象的图像数据的颜色空间或每个像素的位数不固定,或在将被执行的图像处理的内容、过程、参数等不固定的情况下,由于应用程序32指示图像处理部的重构造,所以将由图像处理装置(图像处理部)执行的图像处理可以根据为处理的对象的图像数据等而灵活地改变。
在下文中描述图像处理程序组34。如图1中所示,图像处理程序组34可以被大致地划分成模块库36、对应于构造构件的处理构造部42的程序、以及对应于处理管理构件的处理管理部46的程序。虽然细节在稍后描述,但是根据来自应用程序的指令,如图5中的示例所示,关于本示例性实施例的处理构造部42构造图像处理部50,该图像处理模块50由执行预定的图像处理的一个或多个图像处理模块38以及布置在各个图像处理模块38的前级和后级中的至少一个处并且具有用于存储图像数据的缓冲器的缓冲器模块40以管线形式或DAG(有向非循环图)形式连接在一起而形成。构成图像处理部50的实际各个图像处理模块是由CPU12执行并且用于使预定的图像处理在CPU12处被执行的第一程序,或是由CPU12执行并且用于指示除CPU12以外的处理器(在本示例性实施例中,GPU52)以执行处理(即,图像处理模块38本身是由CPU12操作的程序,但是用于请求并且促使为第二处理器的GPU52执行图像处理模块38执行的图像处理)的第二程序。执行预定的分别不同的图像处理(例如,输入处理、滤波处理、颜色转换处理、放大/缩小处理、倾斜角感测处理、图像旋转处理、图像合成处理、输出处理等)的多个类型的图像处理模块38的程序被分别登记在上述的模块库36中。
此外,如图15A中的示例所示,图像处理模块38中的每一个由图像处理引擎38A以及控制部38B构成,该图像处理引擎38A以预定的单位处理数据量为单元对图像数据执行图像处理,该控制部38B执行将图像数据输入到在图像处理模块38的前级和后级处的模块以及从这些模块输出图像数据并且执行对图像处理引擎38A的控制。根据图像处理引擎38A执行的图像处理的类型等,从诸如图像的一条线、图像的多条线、图像的一个像素、一个页面的图像等任意数量的字节中,预先选择/设置在各个图像处理模块38处的单位处理数据量。例如,在执行颜色转换处理或滤波处理的图像处理模块38处,单位处理数据量是一个像素。在执行放大/缩小处理的图像处理模块38处,单位处理数据量是图像的一条线或图像的多条线。在执行图像旋转处理的图像处理模块38处,单位处理数据量是一个页面的图像。在执行图像压缩/解压缩处理的图像处理模块38处,单位处理数据量是取决于执行环境的N字节。
此外,图像处理模块38也被登记在模块库36中,在这些图像处理模块38处,图像处理引擎38A执行的图像处理的类型是相同的,但是执行的图像处理的内容是不同的。(在图1中,这些类型的图像处理模块被示出为“模块1”、“模块2”。)例如,对于执行放大/缩小处理的图像处理模块38,多个图像处理模块38被分别准备,诸如执行通过每隔一个像素稀疏将输入的图像数据缩小50%的缩小处理的图像处理模块38、以及以指示的放大/缩小率在输入的图像数据上执行放大/缩小处理的图像处理模块38等。此外,例如,对于执行颜色转换处理的图像处理模块38、将RGB颜色空间转换成CMY颜色空间的图像处理模块38、以及以相反的方式转换的图像处理模块38、以及执行诸如L*a*b*颜色空间等的另一颜色空间转换的图像处理模块38被分别准备。
此外,为了输入为了让图像处理引擎38A以单位处理数据量为单位执行处理所需要的图像数据,图像处理模块38的控制部38B从在其自己的模块的前级处的模块(例如缓冲器模块40)以单位读出数据量为单位获取图像数据,并且将从图像处理引擎38A输出的图像数据以单位写入数据量为单位输出到后级的模块(例如,缓冲器模块40)。(如果伴随有诸如压缩等的数据量的增加或减少的图像处理未在图像处理引擎38A处执行,则单位写入数据量等于单位处理数据量。)或,控制部38B执行将由图像处理引擎38A执行的图像处理的结果输出到其自己的模块的外部的处理(例如,在图像处理引擎38A执行诸如倾斜角感测处理等的图象分析处理的情况下,存在诸如倾斜角感测的结果等的图象分析处理结果代替图像数据被输出的情况)。图像处理模块38也被登记在模块库36中,在这些图像处理模块38处,图像处理引擎38A执行的图像处理的类型和内容是相同的,但是上述的单位处理数据量、单位读出数据量或单位写入数据量是不同的。例如,先前已描述的是,在执行图像旋转处理的图像处理模块38处的单位处理数据量是一个页面的图像,但是执行相同的图像旋转处理但其单位处理数据量是图像的一条线或图像的多条线的图像处理模块38也可以被包括在模块库36中。
此外,被登记在模块库36中的各个图像处理模块38的程序由对应于图像处理引擎38A的程序和对应于控制部38B的程序构成。使对应于控制部38B的程序成为部件。在各个图像处理模块38之中,对于具有相同的单位读出数据量和单位写入数据量的图像处理模块38,对于控制部38B共同地使用一程序,而不论在图像处理引擎38A处所执行的图像处理的类型或内容如何(相同的程序被用作对应于控制部38B的程序)。由此,也减轻了在开发图像处理模块38的程序中的开发负担。
注意,在图像处理模块38之中,也存在如下模块:在这些模块处,在输入图像的属性尚且未知的状态下,单位读出数据量和单位写入数据量未被设置,并且输入图像数据的属性被获取,并且通过将获取的属性代入到预定的计算公式中执行计算,来确定单位读出数据量或单位写入数据量。关于该类型的图像处理模块38,满足的是,对于通过使用相同的计算公式来推导单位读出数据量和单位写入数据量的图像处理模块38,共同使用对应于控制部38B的程序。此外,关于本示例性实施例的图像处理程序组34可以被安装在诸如上文所描述的各种类型的装置中,并且被登记在图像处理程序组34的模块库36中的图像处理模块38的数量和类型当然可以根据在安装有图像处理程序组34的各种类型的装置处所需要的图像处理适当地被添加、删除、或代替。
此外,如图15B中的示例所示,构成图像处理部50的缓冲器模块40中的每一个由缓冲器40A和缓冲器控制部40B构成,该缓冲器40A通过操作系统30从设置在计算机10处的第一存储器14或第二存储器54中保留,该缓冲器控制部40B执行将图像数据输入到在缓冲器模块40的前级和后级处的模块以及从这些模块输出图像数据以及对缓冲器40A的管理。缓冲器模块40中的每一个的缓冲器控制部40B本身是由CPU12执行的程序,并且缓冲器控制部40A的程序也被登记在模块库36中。(在图1中,缓冲器控制部40B的程序被示出为“缓冲器模块”。)注意,缓冲器40A是被保留在与前级的图像处理模块在图像处理中使用的处理器相应地设置的存储器(如果所使用的处理器是CPU12则为第一存储器14,并且如果所使用的处理器是GPU52则为第二存储器54)中的缓冲器。
此外,根据来自应用程序32的指令,构造图像处理部50的处理构造部42由如图1中所示的多个类型的模块产生部44构成。多个类型的模块产生部44对应于相互不同的图像处理。归因于由应用程序32启动模块产生部44,模块产生部44执行产生模块组的处理,该模块组由用于实现对应的图像处理的图像处理模块38和缓冲器模块40形成。
在本示例性实施例中,应用程序32向模块产生部44指定图像处理将被在CPU12或GPU52之中的哪个处理器处执行,并且促使模块产生部44产生相应的图像处理模块38。根据该指定,模块产生部44产生图像处理模块38,该图像处理模块38通过使用指定的处理器执行图像处理。注意,通过使用为第一处理器的CPU12执行图像处理的图像处理模块38,使用被设置成对应于CPU12的第一存储器14的存储器空间。此外,通过使用为第二处理器的GPU52执行图像处理的图像处理模块38,使用被设置成对应于GPU52的第二存储器54的存储器空间。注意,关于通过使用GPU52执行图像处理的后一个图像处理模块38,这些图像处理模块38本身在为主处理器的CPU12上操作,但是就其图像处理而言,CPU12发送请求给GPU52,并且使得GPU52执行这些图像处理。
注意,作为模块产生部44的示例,图1图示出对应于由登记在模块库36中的各个图像处理模块38执行的图像处理的类型的模块产生部44。然而,对应于各个模块产生部44的图像处理可以是由多个类型的图像处理模块38实现的图像处理(例如,由倾斜角感测处理和图像旋转处理形成的倾斜校正处理)。在必需的图像处理是组合多个类型的图像处理的处理的情况下,应用程序32依次启动对应于相应的多个类型的图像处理的模块产生部44。由此,执行需要的图像处理的图像处理部50由模块产生部44构造,该模块产生部44由应用程序32依次启动。
此外,如图1中所示,处理管理部46被构成以包括工作流程管理部46A、资源管理部46B和误差管理部46C。在此处,工作流程管理部46A、资源管理部46B和误差管理部46C的所有的程序也由为主处理器的CPU12执行。
工作流程管理部46A控制在图像处理部50处的图像处理的执行。资源管理部46B管理由图像处理部50的相应的模块对第一存储器14和第二存储器54的使用以及对计算机10的资源的利用。误差管理部46C管理在图像处理部50处发生的误差。
注意,由处理构造部42构造的图像处理部50可以操作使得构成图像处理部50的各个图像处理模块38并行执行图像处理,同时将图像数据以小于一个页面的图像的数据量为单位移交给后级(被称为块单位处理),并且也可以操作使得,在前级的图像处理模块38已经完成关于一个页面的图像的图像数据的图像处理之后,后级的图像处理模块38在该一个页面的图像的图像数据上执行图像处理(被称为页面单位处理)。用于促使图像处理部50执行块单位处理的程序以及用于促使图像处理部50执行页面单位处理的程序分别被准备作为工作流程管理部46A的程序。
接下来将描述本示例性实施例的操作。在本示例性实施例中,图像处理部通过使用多个处理器来构成。因此,如果连接有多个模块的图像处理部通过仅使用单个处理器(主处理器)构成,并且在图像处理时传递图像数据的方法如在本示例性实施例中那样被应用,则存在如下情况:在这些情况下,无法预料的问题将在仅使用主处理器的图像处理部处出现。参照图21描述这些问题。
在使用的处理器是单个主处理器的情况下,在相应的模块处所使用的存储器空间也是单个存储器空间,并且因此,缓冲器模块40保存图像数据的缓冲器(存储器区域)被保留在存储器空间上,该存储器空间与对应于其上操作在前后被连接的模块的处理器的存储器空间相同。因此,在这种情况下,使用对应于主处理器的存储器空间的数据的传递总被执行。
当在使用单个处理器的图像处理部中的数据传送的该方法被用作以及还应用于使用两个处理器(第一处理器和第二处理器)的图像处理部时,缓冲器模块40保存的缓冲器始终被保留在对应于主处理器的存储器空间中。例如,假定主处理器是第一处理器,缓冲存储器40的缓冲器总是被分配给(被保留在)为对应于第一处理器的存储器空间的第一存储器。
另一方面,通过使用第二处理器执行图像处理的图像处理模块38在图像处理之后将图像数据写入在对应于第二处理器的第二存储器中所保留的存储器区域中。
因此,即使在通过使用第二处理器执行图像处理的图像处理模块38被连接的情况下,这些图像处理模块38处理并且被写入到第二存储器中的图像数据,被临时写入到被连接在这些图像处理模块38之间的缓冲器模块40的缓冲器(被保留在第一存储器中的缓冲器)中,并且进一步地必须被再写入到第二存储器。这在本质上是不必要的数据传送,并且也是处理速度下降的原因。
因此,在本示例性实施例中,由模块产生部44产生的缓冲器模块40在对应于前级的图像处理模块38在图像处理中使用的处理器的存储器空间中保留缓冲器,该缓冲器是前级的图像处理模块38已经处理的图像数据的输出目的地。此外,在在图像处理中使用与由前级的图像处理模块38在图像处理中使用的处理器相同的处理器的图像处理模块38被连接在缓冲器模块40的后级处的情况下,缓冲器模块40将上述的保留的缓冲器的地址移交至图像处理模块38。此外,在在图像处理中使用不同于在图像处理中由前级的图像处理模块38使用的处理器的处理器的图像处理模块38被连接在缓冲器模块40的后级处的情况下,缓冲器模块40将用于传递的缓冲器分离地保留在对应于后级的图像处理模块38使用的处理器的存储器中,并且缓冲器模块40执行处理以传递图像数据,使得可以让后级的图像处理模块38获取并且使用来自前级的图像数据。缓冲器(存储器区域)的保留经由资源管理部46B执行。稍后描述其细节。
在本示例性实施例中,当接通计算机10的电源时,资源管理部46B启动,并且由资源管理部46B执行图2A中所示的初始化处理。
在本示例性实施例中,准备下列三个类型的管理方法作为由资源管理部46B管理存储器的方法:第一管理方法,其中,每次存在来自图像处理部50的各个模块的请求,则从第一存储器14或第二存储器54保留将被分配给为请求的源的模块的存储器区域;第二管理方法,其中,从对应于各个处理器的存储器空间中预先保留给定大小的存储器区域,并且,当存在来自各个模块的请求时,预先保留的存储器区域的部分区域被分配给为请求的源的模块;以及第三管理方法,其中,从对应于各个处理器的存储器空间中预先保留给定大小的存储器区域,并且,当存在来自各个模块的请求时,如果所请求的存储器区域的大小小于阈值,则预先保留的存储器区域的部分区域被分配给为请求的源的模块,并且,如果所请求的存储器区域的大小大于或等于阈值,则保留将被分配给为请求的源的模块的存储器区域。可以选择和设置利用这些管理方法中的哪种管理方法来执行存储器管理。注意,本发明并不限于这些方法,并且其它存储器管理方法可以被包括。
例如,管理方法被如下选择。在诸如当从管理方法不具有存储器限制等的应用程序被应用并且归因于复杂的存储器管理等期望抑制程序大小的增加的情况下,第一管理方法是尤其适当的。此外,在可以由执行根据本发明的图像处理的整个应用程序使用的存储器量受到限制并且存在在该范围内操作的需要的情况下,第二管理方法是适当的。另一方面,在必须使保留或释放存储器所需的处理时间成为高速的情况下,第三管理方法是适当的,因为当在保留或释放细小存储器区域中使用操作系统30的存储器保留/释放功能时,开销(overhead)可能变得很大。
在图2A中所示的初始化处理的步骤100中,判断被选择/设定的存储器管理方法是否为第二管理方法或第三管理方法。注意,在将图像处理程序组34安装到计算机10中时,可以选择/设定存储器管理方法。或,资源管理部46B可以获取计算机10的系统环境(例如,第一存储器14和第二存储器54的大小,将图像处理程序组34装入的装置的类型等),并且基于获取的系统环境自动地选择/设定存储器管理方法。
当存储器管理方法是第一管理方法时,上述的判断为否定的,并且初始化处理结束。然而,当上述的判断为肯定时,例行程序移至步骤102,在步骤102中,从设置在计算机10处的第一存储器14或第二存储器54中通过操作系统30保留预定大小的存储器区域(连续区域),并且例行程序结束。注意,上述的预定大小也可以根据系统环境等选择/设定。
在此处,当存储器管理方法是第一管理方法时,响应于之后发生的存储器保留请求,所请求的存储器区域通过操作系统30被保留,并且此外,响应于存储器释放请求,存储器区域类似地通过操作系统30被释放。这些处理类似于在常用程序中使用的那些,并且因此,省略其描述。
此外,当存储器管理方法是第二管理方法时,响应于之后发生的存储器保留请求,从在事先在先前步骤102中保留的存储器区域之中状态是“未使用”的未使用区域中,搜索并保留对应于该请求的大小的存储器区域,并且被保留的存储器区域的状态被转变成“已使用”,并且被保留的存储器区域被移交给请求的源。关于存储器释放请求,对其请求了释放的存储器区域被合并到在预先保留的存储器区域之中的未使用的区域,并且执行将合并的存储器区域的状态从“已使用”改变成“未使用”的处理。表达存储器区域的状态是未使用或已使用的信息可以在例如表或列表等中被管理。
接着描述存储器管理方法是第三管理方法的情况。在存储器管理方法是第三管理方法的情况下,当存储器保留请求发生时,在图2B中示出的在存储器保留请求时的处理由资源管理部46B执行。在存储器保留请求时的处理中,首先,在步骤104中判断所请求的大小是否小于或等于预定的阈值。当所请求的大小不小于或等于阈值时,以与在第一管理方法中相同的方式,在步骤106中,所请求的大小的存储器区域通过操作系统30被保留,并且在步骤108中,被保留的存储器区域的起始地址被登记在资源管理部46B内的表中。注意,代替表,可以使用诸如列表或相联阵列等的另一手段。当在步骤104中判断所请求的大小小于或等于阈值时,以与在第二管理方法中同样的方式,从在先前步骤102中预先保留的存储器区域之中的未使用的区域中保留所请求的大小的存储器区域(步骤110),并且被保留的区域的状态转变成“已使用”(步骤112)。然后,在步骤114中,被保留的存储器区域被移交给请求的源。
此外,在存储器管理方法是第三管理方法的情况下,当存储器释放请求发生时,在图2C中示出的存储器释放请求时的处理由资源管理部46B执行。在存储器释放请求时的处理中,首先,在步骤116中判断对其请求释放的存储器区域的起始地址是否被登记在上述的表中。如果在步骤116判断为肯定的,则正对其请求释放的存储器区域是通过操作系统30被保留的存储器区域,并且因此,在步骤118中,通过操作系统30释放对其请求释放的存储器区域。在下一个步骤120中,对其请求释放的存储器区域的起始地址被从上述的表中删除。
此外,当在步骤116中判断为否定时,对其请求释放的存储器区域是从在先前步骤102中预先保留的存储器区域中保留的存储器区域。因此,在步骤122中,对其请求释放的存储器区域被合并到在预先保留的存储器区域之中的未使用的区域,并且合并的存储器区域的状态在步骤124中被改变成“未使用”。在这样的处理之后,在步骤126中,所请求的存储器区域的释放被通知给请求的源,并且存储器释放请求时的处理结束。
接着描述资源管理部46B被请求以保留/释放存储器以外的资源(例如,特定文件等)的情况。
当资源保留请求被输入时,资源管理部46B执行在图2D中示出的资源保留请求时的处理。在资源保留请求时的处理中,首先,在步骤130中,通过操作系统30保留请求保留的资源。在下一个步骤132中,与识别为请求的源的模块的信息对应地,在资源管理部46B内的表中登记所保留的资源的地址。在步骤134中,被保留的资源被移交给请求的源,并且处理结束。
此外,当资源释放请求被输入时,资源管理部46B执行在图2E中示出的资源释放请求时的处理。在资源释放请求时的处理中,首先,在步骤136中,与识别为请求的源的模块的信息对应地被登记在资源管理部46B内的表格中的信息(被保留的资源的地址)被读出。在下一个步骤138中,由读出信息表达的所有资源通过操作系统30被释放。此外,在步骤140中,该表被更新以从该表中删除对应于释放的资源的信息。在下一个步骤142中,资源的释放被通知给请求的源,并且处理结束。
以这种方式,在保留/释放除存储器以外的资源中,在保留时将被保留的资源登记在表中,并且,在释放时,登记在表中的资源(根据来自同一请求源的请求所保留的资源)均被释放。因此,与其中资源释放请求的源通过指定为释放的对象的资源来请求释放的方法相比,可以防止发生资源释放的遗漏。注意,在这些存储器和资源保留/释放处理中,存在处理归因于资源等的不充分而失效的情况,并且在这些情况下,需要诸如通知偏差管理部46C等的处理。然而,省略这些偏差处理的描述以便简化解释。
另一方面,在安装有图像处理程序组34的装置中,当发生其中一些类型的图像处理必须被执行的情形时,该情形由应用程序32中的特定一个应用程序感测,并且图3中所示的处理由该应用程序32执行。注意,下面是图像处理必须被执行的情形的例子:用户指示工作的执行的情况,在该工作中,图像由用作图像数据供应部22的图像读取部读取,并且由用作图像输出部24的图像记录部记录为在记录材料上的图像,或被显示为在用作图像输出部24的显示部上的图像,或图像数据由用作图像输出部24的写入装置写入在记录介质上,或图像数据由用作图像输出部24的传输部传输,或图像数据被存储在用作图像输出部24的图像存储部中;或用户指示工作的执行的情况,该工作对于由用作图像数据供应部22的接收部接收的图像数据或被存储在用作图像数据供应部22的图像存储部中的图像数据,执行上述记录到记录材料上、显示在显示部上、写入到记录介质上、传输、或存储在图像存储部中的任一种。此外,图像处理必须被执行的情形不受上文描述的那些的限制,并且这些情形可以是例如如下情况:其中,在应用程序32可以执行的处理的名称等根据来自用户的指令被显示在显示部16上的列表中的状态下,用户选择为执行的对象的处理等。
如上文所描述的,当感测到一些类型的图像处理必须被执行的情形已经发生时,应用程序32首先识别供应为图像处理的对象的图像数据的图像数据供应部22的类型(也参照图3的步骤150),并且,当识别的类型是缓冲器区域(第一存储器14的部分区域)(即,当在图3的步骤152中判断为肯定的时),应用程序32产生包括被指定作为图像数据供应部22的缓冲器区域的缓冲器模块40(也参照图3的步骤154)。在稍后描述的缓冲器模块40的新的产生中,通过产生执行缓冲器模块40的缓冲器控制部40B的程序的过程、线程或对象来产生缓冲器控制部40B,并且被用作缓冲器40A的存储器区域由所产生的缓冲器控制部40B保留。然而,在该步骤154中缓冲器模块40的产生通过设置参数以及执行产生缓冲器控制部40B的处理来实现,该参数促使(缓冲器控制部40)将指定的缓冲器区域识别为已经保留的缓冲器40A。产生的缓冲器模块40在此处用作图像数据供应部22。
接着,应用程序32以与上文所描述的相同的方式识别用作在其上执行图像处理的图像数据的输出目的地的图像输出部24的类型(也参照图3的步骤156),并且,当识别类型是缓冲器区域(第一存储器14的部分区域)时(即,当在图3的步骤158中判断为肯定的时),应用程序32以与上文所描述的相同的方式产生缓冲器模块40,该缓冲器模块40包括被指定作为图像输出部24的缓冲器区域(也参照图3的步骤160)。所产生的缓冲器模块40在此处用作图像输出部24。而且,应用程序32识别将被执行的图像处理的内容,并且将待被执行的图像处理划分成对应于各个模块产生部44的水平的图像处理的组合,并且判断被需要以便实现将被执行的图像处理的图像处理的类型以及各个图像处理的执行顺序(也参照图3的步骤162)。注意,该判断可以通过例如与用户可能指示执行的工作类型对应地将上述的图像处理的类型和各个图像处理的执行顺序事先作为信息登记来实现,并且应用程序32读出对应于指示执行的工作的类型的信息。
此外,基于上文判断的图像处理的类型和执行顺序,应用程序32首先启动模块产生部44,该模块产生部44对应于在执行顺序中为第一的图像处理(产生执行模块产生部44的程序的过程、线程或对象)(也参照图3的步骤164)。之后,应用程序32向启动的模块产生部44通知下列信息作为该模块产生部44产生模块组所必需的信息,并且指示模块产生部44产生对应的模块组(也参照图3的步骤166):指定相应的产生的图像处理模块38将在图像处理中使用的处理器的信息,用于识别将图像数据输入到模块组的输入模块的输入模块识别信息,用于识别模块组将输出图像数据到其的输出模块的输出模块识别信息,表达被输入到模块组的输入图像数据的属性的输入图像属性信息,以及将被执行的图像处理的参数。注意,在模块产生部44的模块产生处理中使用的处理器是为主处理器的CPU12。即,各个模块产生组44在CPU12上操作。
注意,关于上述输入模块,对于在执行顺序为第一的模块组,图像数据供应部22是输入模块,并且对于在执行顺序中为第二或之后的模块组,前级的模块组的最终模块(通常,缓冲器模块40)是输入模块。此外,关于上述输出模块,对于在执行顺序中为最后一个的模块组,图像输出部24是输出模块,并且因此,图像输出部24被指定作为输出模块。然而,对于其它模块组,输出模块未被确定,并且因此,由应用程序32对其的指定未执行,并且根据需要由模块产生部44产生/设定输出模块。此外,例如,输入图像属性和图像处理的参数可以与用户可能指示执行的工作的类型相应地事先作为信息登记,并且应用程序32通过读出对应于已经指示执行的工作的类型的信息,可以识别输入图像属性和图像处理参数。或,用户可以指定输入图像属性和图像处理参数。
另一方面,当模块产生部44由应用程序32启动时,模块产生部44执行图4A中所示的模块产生处理(也参照图3的步骤168)。在模块产生处理中,首先,在步骤200中,判断在该模块产生部44处是否存在接着将被产生的图像处理模块38。当判断为否定的时,模块产生处理结束。当存在将被产生的图像处理模块38时,在步骤202中,表达将被输入到将被产生的图像处理模块38的输入图像数据的属性的输入图像属性信息被获取。在下一个步骤204中,也鉴于由在步骤202中获取的信息所表达的输入图像数据的属性,判断是否需要产生在先前步骤200中已经被判断将被产生的图像处理模块38。
具体地,在例如如下情况下:对应于正被执行的模块产生处理的模块产生部44是产生执行颜色转换处理的模块组的模块产生部,并且根据图像处理的参数从应用程序32指定CMY颜色空间作为输出图像数据的颜色空间,如果基于在步骤202中获取的输入图像属性信息确定输入图像数据是RGB颜色空间的数据,则执行RGB→CMY颜色空间转换的图像处理模块38必须被产生作为执行颜色空间处理的图像处理模块38。然而,如果输入图像数据是CMY颜色空间的数据,则输入图像数据的属性和输出图像数据的属性就颜色空间而言一致,并且因此,可以判断执行颜色空间转换处理的图像处理模块38的产生是不必要的。当产生被判断为不必要时,例行程序返回至步骤200。
注意,在缓冲器模块40在产生的图像处理模块38的前级处存在的情况下,获取输入图像数据的属性的处理,可以通过从将图像数据写入到该缓冲器模块40的更前级的图像处理模块38获取输出图像数据的属性来实现。
在下一个步骤206中,判断在产生的图像处理模块38的后级处是否需要缓冲器模块40。在图像处理模块的后级是输出模块(图像输出部24)(例如,参见在图5A至图5C中所示的图像处理部50中作为末级的图像处理模块38)的情况下,或在图像处理模块是相对于图像数据执行诸如分析等的图像处理的模块并且将其结果输出至另一图像处理模块38诸如例如在图5B中所示的图像处理部50中执行倾斜角感测处理的图像处理模块38的情况下,该判断为否定的并且例行程序移至步骤210,且不执行缓冲器模块40的产生。在不同于上文描述的情况的情况下,判断为肯定的并且例行程序移至步骤208,在步骤208中,通过启动缓冲器控制部40B(产生执行缓冲器控制部40B的程序的过程、线程或对象),连接到图像处理模块的后级的缓冲器模块40被产生。当缓冲器控制部40B由模块产生部44(或由上文描述的应用程序32)启动时,缓冲器控制部40B执行图6中所示的缓冲器控制处理。稍后描述该缓冲器控制处理。
在下一个步骤210中,前级的模块(例如,缓冲器模块40)的信息和后级的缓冲器模块40的信息、以及被输入到图像处理模块38的输入图像数据的属性、以及处理参数被提供,并且产生通过使用由从应用程序32通知的指定信息指示的处理器执行图像处理的图像处理模块38。注意,对于对其在步骤206中判断后级的缓冲器模块40是不必要的图像处理模块38来说,后级的缓冲器模块40的信息未被提供。此外,在处理内容是固定的并且诸如例如50%缩小处理的特别的图像处理参数不被需要的情况下,处理参数未被提供。
在模块产生处理(步骤210)中,从登记在模块库36中的多个候选模块中,选择匹配在步骤202中获取的输入图像数据的属性以及将在图像处理模块38处执行的处理参数的图像处理模块38,并可以用作图像处理模块38。例如,在例如如下情况下:对应于正被执行的模块产生处理的模块产生部44是产生执行颜色转换处理的模块组的模块产生部,并且根据处理参数从应用程序32指定CMY颜色空间作为输出图像数据的颜色空间,并且此外输入图像数据是RGB颜色空间的数据,则从登记在模块库36中并且执行各种类型的颜色空间处理的多个类型的图像处理模块38之中,选择执行RGB→CMY颜色空间转换的图像处理模块38。
此外,如果图像处理模块是执行放大/缩小处理的图像处理模块38,并且指定的放大/缩小率是除50%以外的比率,则选择以被指定用于输入图像数据的放大/缩小率执行放大/缩小处理的图像处理模块38,而如果指定的放大/缩小率是50%,则执行专门用于50%的放大/缩小率的放大/缩小处理的图像处理模块38被选择,该专门的放大/缩小处理即通过每隔一个像素细化将输入的图像数据缩小50%的缩小处理。注意,图像处理模块38的选择并不限于上文描述的选择。例如,多个图像处理模块38在由图像处理引擎38A执行的图像处理中具有不同的单位处理数据量,该多个图像处理模块38可以事先被登记在模块库36中,并且可以根据操作环境来选择适当的单位处理数据量的图像处理模块38,所述操作环境诸如可以分配给图像处理部50的存储器区域的大小等(例如,上述大小越小,则选择越小的单位处理数据量的图像处理模块38等)。或,可以使应用程序32或用户选择图像处理模块38。
在下一个步骤212中,后级的缓冲器模块40的ID以及产生的图像处理模块38的ID的组被通知给流程管理部46。使得ID为可以明确地区别各个模块的信息。例如,ID可以是以各个模块被产生的顺序给定的编号,或可以是在缓冲器模块40或图像处理模块38的对象的存储器上的地址等。被通知给流程管理部46A的信息例如以图4B中所示的表的形式、或列表的形式、或相联阵列的形式等被保存在流程管理部46A的内部处,并且在稍后的处理中被使用。在此处,通过假设信息以表的形式被保存继续进行解释。
注意,例如,在图像处理模块38不具有先前提及的后级的缓冲器模块40的情况下,处理由下列方法执行。在产生的图像处理模块38是管线的最终点或有向非循环图的最终点中的一个的情况下,诸如在图5A中的执行输出处理的图像处理模块38的图像处理模块38,该图像处理模块38作为模块产生部44的输出被返回到为呼叫源的应用程序32。此外,在诸如在图5B中的执行倾斜角感测处理的图像处理模块38的情况下,其中,在产生的图像处理模块38处的图像处理的结果在另一图像处理模块(在图5B中的执行图像旋转处理的图像处理模块38)处被使用,模块产生部44指示处理的重复执行直至相对于该图像处理模块38的处理被完成为止,并且获取处理的结果。
当步骤212的处理结束时,模块产生部44返回控制到步骤200并且判断是否存在接着将被产生的图像处理模块。注意,各个模块产生部44产生执行对应的给定的图像处理的模块组。因此,该判断可以通过事先登记并且读出针对各个模块产生部44中的每一个关于哪种图像处理模块将被以哪种连接关系产生的信息,或通过在操作模块产生部44的程序中描述此来实现。例如,在对应于正被执行的模块产生处理的模块产生部44产生执行由多个类型的图像处理模块38实现的图像处理(例如,由执行倾斜角感测处理的图像处理模块38和执行图像旋转处理的图像处理模块38实现的倾斜校正处理)的模块组的情况下,产生包含两个或更多个的图像处理模块38的模块组。
当从被指示产生模块组的模块产生部44向应用程序32通知如上文所描述的模块组的产生的完成时,基于在图3的步骤162中的判断结果,应用程序32判断是否需要也产生执行其它图像处理的模块组,以便实现必要的图像处理。如果必要的图像处理是组合多个类型的图像处理的处理,则应用程序32启动对应于各个图像处理的其他模块产生部44,并且依次执行给予模块组产生所需要的信息的通知的处理(也参照图3的步骤170和172)。然后,归因于上文描述的模块产生处理(图4)由依次被启动的模块产生部44依次执行(也参照图3中的步骤174),执行所需的图像处理的图像处理部50被构造成如图5A至图5C中的示例所示。
注意,在本示例性实施例中,在诸如当特定图像处理的执行频率是高的等的情况下,甚至在执行特定图像处理的图像处理部50被产生之后,可以由不指示用于产生执行特定图像处理的图像处理部50的多个类型的模块产生部44结束处理的应用程序32再产生执行特定图像处理的图像处理部50,从而保留它们作为过程、线程或对象,并且,每次发生执行特定图像处理的需要时,依次指示作为过程、线程或对象保留的相应的模块产生部44以产生模块组。由此,每次执行特定图像处理的需要发生时,无需分别启动相应的各个模块产生部44的处理,并且再产生执行特定图像处理的图像处理部50所需的时间可以被缩短。
当由模块产生部44启动时,图像处理模块38的控制部38B执行图12中所示的图像处理模块初始化处理。在该图像处理模块初始化处理中,首先,在步骤250中,归因于模块产生部44执行模块产生处理的步骤210的处理(图4),控制部38B存储从模块产生部44提供的其自身的模块的前级和后级的模块的信息。此外,在下一个步骤252中,基于控制部38B自身的模块的图像处理引擎38A执行的图像处理的类型和内容等,控制部38B识别其自身的模块使用的存储器的大小以及其自身的模块使用的其它资源。注意,其自身的模块使用的存储器主要是让图像处理引擎38A执行图像处理所需的存储器。然而,在前级的模块是图像数据供应部22的情况下,或在后级的模块是图像输出部24的情况下,可能需要用于缓冲器的存储器,其用于向和从前级和后级的模块传输和接收图像数据时临时存储图像数据。此外,在表的信息等被包括在处理参数中的情况下,用于保存这些信息的存储器区域可能被需要。然后,在步骤254中,资源管理部46B被通知在步骤252中识别的大小,并且资源管理部46B被请求以保留通知的大小的存储器区域。在此处,假定所请求的存储器区域是对应于其自身的模块在图像处理中使用的处理器的存储器空间的存储器区域。
在图2中所示的资源管理处理(资源管理部46B)中,当从图像处理模块38或缓冲器模块40请求对存储器区域的保留时,在例如被选择/设定的存储器管理方法是第一管理方法的情况下,从为存储器保留请求的源的模块通知的大小的存储器区域(连续区域)通过操作系统30被保留。然后,通过向为存储器保留请求的源的模块通知被保留的存储器区域的起始地址,被保留的存储器区域被移交至为存储器保留请求的源的模块。此外,如果存储器管理方法是第二管理方法,则从在预先保留的存储器区域之中的未使用的区域中保留通知的大小的存储器区域(连续区域),并且被保留的存储器区域被转变成“已使用”,并且被保留的存储器区域被移交至存储器保留请求的源。此外,如果被选择/设定的存储器管理方法是第三管理方法,则通过执行上文描述的在存储器保留请求时的处理(参见图2B),来执行通知大小的存储器区域的保留和移交。
在图12中所示的图像处理模块初始化处理(图像处理模块38的控制部38B)中,当需要的存储器区域经由资源管理部46B通过上文描述的处理保留时,在下一个步骤256中,基于先前步骤252的处理结果,判断其自身的模块(的图像处理引擎38A)是否需要除存储器以外的资源。如果判断为否定的,则例行程序移至步骤262,且无任何处理被执行。如果判断为肯定的,则例行程序移至步骤258,在步骤258中,除其自身的模块需要的存储器以外的资源的类型等被通知给资源管理部46B,并且该资源管理部46B被请求以保留所通知的其它资源并保留它们。
接着,在步骤262中,控制部38B判断模块为其自身的模块的前级,并且如果在其自身的模块的前级处没有模块存在,则例行程序移至步骤272。如果前级的模块为除缓冲器模块40以外的模块,例如,为图像数据供应部22或特定文件等,则其初始化处理根据需要在步骤270中被执行,并且例行程序进入步骤272。此外,在其自身的模块的前级处存在模块并且该前级的模块是缓冲器模块40的情况下,例行程序从步骤262进入步骤264,并且通过从前级的缓冲器模块40一次读出图像数据而获取的图像数据的数据量(即,单位读出数据量)被识别。如果其自身的模块的前级的缓冲器模块40的数量是一个,则存在一个单位读出数据量。然而,在诸如当存在多个前级的缓冲器模块40并且图像处理引擎38A通过使用从多个缓冲器模块40中的各个获取的图像数据执行图像处理时的情况下,诸如在例如在图5C中所示的图像处理部50中执行图像合成处理的图像处理模块38等的情况下,对应于前级的各个缓冲器模块40的单位读出数据量被根据其自身的模块的图像处理引擎38A执行的图像处理的类型和内容、以及前级的缓冲器模块40的数量等来确定。
在步骤266中,通过向前级的缓冲器模块40中的单个通知在步骤264中识别的单位读出数据量,设置该缓冲器模块40的单位读出数据量(也参照图15A的(1))。在下一个步骤268中,判断是否为其自身的模块的前级的所有缓冲器模块40设置了单位读出数据量。如果其自身的模块的前级的缓冲器模块40的数量是一个,则该判断为肯定的,并且例行程序移至步骤272。如果前级的缓冲器模块40的数量是复数,则在步骤268中判断为否定的,并且例行程序返回至步骤266,并且步骤266和步骤268被重复,直至步骤268的判断变成肯定为止。以这种方式,分别为前级的所有缓冲器模块40设置单位读出数据量。
在步骤272中,控制部38B判断其自身的模块的后级的模块。在其自身的模块的后级的模块是除缓冲器模块40以外的情况下,例如,为图像输出部24或特定文件等,则其初始化处理根据需要在步骤278中被执行,并且例行程序移至步骤280。例如,如果后级的模块是由图像记录部、显示部、写入装置或传输部中的任一种形成的图像输出部24,则对于图像输出部24执行处理作为上述初始化处理,所执行的处理诸如给出将以对应于单位写入数据量的数据量为单元输出图像数据等的通知。此外,如果后级的模块是缓冲器模块40,则在一次的图像数据的写入中的图像数据的数据量(即,单位写入数据量)在步骤274中被识别。在步骤276中为后级的缓冲器模块设置该单位写入数据量(也参照图15A的(2)),并且之后,例行程序移至步骤280。在步骤280中,向模块产生部44通知该图像处理模块初始化处理完成,并且图像处理模块初始化处理结束。
另一方面,当构成图像处理部50的各个缓冲器模块40的缓冲器控制部40B由模块产生部44或应用程序32启动时,缓冲器控制部40B执行图6中所示的缓冲器控制处理。在该缓冲器控制处理中,当缓冲器控制部40B由模块产生部44或应用程序32启动并且缓冲器模块40的产生被指示时,等待请求的数量在步骤356中被初始化为0。在下一个步骤358中,判断是否从其自身模块的前级的图像处理模块38通知了单位写入数据量或从其自身模块的后级的图像处理模块38通知了单位读出数据量。如果判断为否定的,则例行程序移至步骤362,在步骤362中,判断已经从连接到其自身的模块的所有图像处理模块38通知了单位写入数据量或单元读出数据。如果判断为否定的,则例行程序返回至步骤358,并且步骤358和362被重复,直至步骤358或步骤362的判断为肯定的为止。
当从连接到其自身的模块的特定图像处理模块38通知了单位写入数据量或单位读出数据量时,在步骤358中判断为肯定的,并且例行程序移至步骤360,在步骤360中,通知的单位写入数据量或单位读出数据量被存储。之后,例行程序返回至步骤358。因此,每次从连接到其自身的模块的各个图像处理模块38通知单位写入数据量或单位读出数据量,归因于正由连接到其自身的模块的各个图像处理模块38的控制部38B执行图像处理模块初始化处理(图12)的步骤266或步骤276的处理,通知的单位写入数据量或单位读出数据量被存储,并且由此,通知的单位写入数据量或单位读出数据量被设置在缓冲器模块40处(也参照图15B的(1)和(2))。
当从连接到其自身的模块的所有图像处理模块38通知图像写入数据量或图像读出数据量,并且通知的单位写入数据量和单位读出数据量分别被设置时,在步骤362中判断为肯定的,并且例行程序进入步骤364。在步骤364中,基于由连接到其自身的模块的各个图像处理模块38分别设置的单位写入数据量以及单位读出数据量,缓冲器控制部40B确定为其自身的模块的缓冲器40A的管理单位的单位缓冲器区域的大小,并且存储所确定的单位缓冲器区域的大小。在被设置在其自身的模块处的单位写入数据量与单位读出数据量之中的最大值适合于单位缓冲器区域的大小。然而,单位写入数据量可以被设置作为单位缓冲器区域的大小,或单位读出数据量(在多个图像处理模块38被连接在其自身的模块的后级的情况下,分别由各个图像处理模块38设置的单位读出数据量的最大值)可以被设置作为单位缓冲器区域的大小。或,该单元数据写入量和(多个)单位读出数据量(的最大值)的最小公倍数可以被设置。或,如果该最小公倍数小于预定值,则最小公倍数可以被设置,或如果最小公倍数大于或等于预定值,则另一值(例如,该单位写入数据量和(多个)单位读出数据量的上述最大值、或单位写入数据量,或(多个)单位读出数据量(的最大值)中的任一个)可以被设置作为单位缓冲器区域的大小。
在下一个步骤366中,缓冲器控制部40B判断被用作其自身的模块的缓冲器40A的存储器区域是否已经被提供。如果其自身的模块由模块产生部44产生,则该判断为否定的,并且缓冲器标记在步骤368中被设置为0。之后,例行程序移至步骤374。此外,如果其自身的模块由应用程序32产生并且是用作图像数据供应部22或图像输出部24的缓冲器模块40,则被用作其自身的模块的缓冲器40A的存储器区域已经存在。因此,步骤366的判断为肯定的,并且例行程序移至步骤370。在步骤370中,在先前步骤364中确定的单位缓冲器区域的大小被改变成被用作其自身的模块的缓冲器40A的所建立的存储器区域的大小。此外,在下一个步骤372中,缓冲器标记被设置为1,并且之后,例行程序进入步骤374。
在步骤374中,缓冲器控制部40B产生对应于其自身的模块的后级的各个图像处理模块38的相应的有效数据指针,并且初始化相应的产生的有效数据指针。这些有效数据指针是分别指示在由其自身的模块的前级的图像处理模块写入其自身的模块的缓冲器40A中的图像数据之中的、还没有被对应的后级的图像处理模块38读出的图像数据(有效数据)的开始位置(下一个读出开始位置)和结束位置的指针。在步骤374的初始化处理中,通常,设置意味着有效数据不存在的特殊信息。然而,如果其自身的模块由应用程序32产生并且是用作图像数据供应部22的缓冲器模块40,则存在如下情况:为图像处理的对像的图像数据已经被写入被用作其自身的模块的缓冲器40A的存储器区域中。在该情况下,该图像数据的开始位置和结束位置分别被设置在对应于后级的各个图像处理模块38的有效数据指针处。
在缓冲器模块40处的初始化处理由上文描述的处理完成,并且在下一个步骤376中,初始化处理的完成被通知给流程管理部46A。此外,在步骤378中,判断是否大于0的值被设置作为初步设定在先前步骤356中执行了的等待请求的数量。如果判断为否定的,则例行程序移至步骤380,并且判断是否已经从连接在其自身的模块的前级或后级处的图像处理模块38收到删除通知,所述删除通知给出将执行删除该图像处理模块38的处理的通知。如果该判断也为否定的,则例行程序返回至步骤378,并且步骤378和380被重复,直至判断中的任一项为肯定的为止。
另一方面,当由于上文描述的模块产生处理(参见图4)依次由应用程序32依次启动的模块产生部44执行导致完成执行需要的图像处理的图像处理部50的构造时,应用程序32判断指示其执行的图像处理的执行形式是块单位处理还是页面单位处理。然后,通过启动执行对应于判断的执行形式的流程管理部46A的程序的过程、线程或对象,应用程序32指示流程管理部46A以执行通过图像处理部50的图像处理(也参照图3的步骤176)。
归因于根据图像处理的执行形式而启动不同的程序,当图像处理的执行形式是块单位处理时,处理管理部46的流程管理部46A执行图16中所示的块单位控制处理,并且当图像处理的执行形式是页面单位处理时,则处理管理部46的流程管理部46A执行图17中所示的页面单位控制处理。注意,块单位控制处理和页面单位控制处理分别对应于在图3的步骤178中所示的图像处理部控制处理。在块单位控制处理或页面单位控制处理中,归因于流程管理部46A向在结成图像处理部50的多个图像处理模块38之中的预定的图像处理模块38输入处理请求,由图像处理部50执行的图像处理以以块为单位的执行或以页面为单位的执行的执行形式执行。在下文中,在描述图像处理部50的整体操作之前,在由各个缓冲器模块40的缓冲器控制部40B执行的初始化处理完成之后的处理以及由各个图像处理模块38的控制部38B执行的图像处理模块控制处理将以该顺序进行描述。
在本示例性实施例中,在图像处理模块38将图像数据写入到后级的缓冲器模块40的情况下,写入请求被从图像处理模块38输入到缓冲器模块40。在图像处理模块38从前级的缓冲器模块40读出图像数据的情况下,读出请求被从图像处理模块38输入到缓冲器模块40。因此,当写入请求被从其自身的模块的前级的图像处理模块38输入时,或当数据请求被从其自身的模块的后级的图像处理模块38输入时,缓冲器模块40的缓冲器控制部40B归因于中断发生执行图7中所示的请求接收中断处理。注意,在下文中,描述在发生中断的前提条件下被给出,但是处理可以归因于如在常用程序中的方法或功能的调用而开始。在这种情况下,针对各个请求执行处理的结构可以被使用,并且请求在如在下列描述中的队列中未被排队。
在请求接收中断处理中,首先,在步骤400中,识别将写入请求或数据请求输入到其自身的模块的请求源的请求源识别信息,以及表达请求(写入或读出)的类型的请求类型信息,作为请求信息被登记在队列的结尾处。这些队列分别形成在被分配给各个缓冲器模块40的存储器上。此外,在下一个步骤402中,等待请求的数量增加一,并且请求接收中断处理结束。由于该请求接收中断处理,每次写入请求或读出请求被从特定缓冲器模块40的前级或后级的图像处理模块输入到该特定缓冲器模块40,对应于输入的写入请求或读出请求的请求信息依次被登记在对应于该特定缓冲器模块40的队列中,并且等待请求的数量一个接一个地增加。
此外,归因于上文描述的请求接收中断处理正被执行,当等待请求的数量变成大于或等于1的值时,缓冲器控制处理(图6)的步骤378的判断为肯定的,并且例行程序移至步骤382,在步骤382中,从队列的开始取出请求信息。在下一个步骤384中,基于被包括在在步骤382中取出的请求信息中的请求类型信息,判断对应于取出的请求信息的请求的类型(写入或读出),并且例行程序根据该判断的结果分裂。如果请求的类型是读出请求,则例行程序从步骤384移至步骤386,并且在图8A和图8B中所示的数据写入处理被执行。
在数据写入处理中,首先,在步骤410中,判断1是否被设置用于缓冲器标记,即,是否其自身的模块是由应用程序32产生的缓冲器模块40。如果该判断为肯定的,因为被用作缓冲器40A的存储器区域已经被保留,则例行程序移至步骤422,且无任何处理被执行。此外,如果判断在步骤410为否定的,即,如果其自身的模块是由模块产生部44产生的缓冲器模块40,则例行程序进入步骤412。在步骤412中,判断在结成其自身的模块的缓冲器40A的单位缓冲器区域之中是否存在具有空闲空间区域的单位缓冲器区域(图像数据没有写入到其结尾的单位缓冲器区域)。
在由模块产生部44产生的缓冲器模块40处,被用作缓冲器40A的存储器区域(单位缓冲器区域)在最初不被保留,并且在每次出现存储器区域的不足时,单位缓冲器区域被保留作为单位。因此,当写入请求首先被输入到缓冲器模块40时,被用作缓冲器40A的存储器区域(单位缓冲器区域)不存在,并且该判断为否定的。此外,也在被用作缓冲器40A的单位缓冲器区域通过将在稍后被描述处理被保留之后,随着图像数据被写入到该单位缓冲器区域在单位缓冲器区域恰好变满的情况下,上述判断为否定的。
如果判断在步骤412中为否定的,则例行程序移至步骤414。在步骤414中,基于被包括在从队列取出的请求信息中的请求源识别信息,识别作为写入请求的源的图像处理模块38,并且识别由作为写入请求的源的图像处理模块38设置的单位写入数据量,并且之后,判断识别的单位写入数据量是否大于在先前步骤364中确定的单位缓冲器区域的大小(图6)。在利用在其自身的模块处设置的单位写入数据量和(多个)单位读出数据量的最大值,或利用在其自身的模块处设置的单位写入数据量,作为单位缓冲器区域的大小的情况下,该判断总是为负,并且例行程序移至步骤420。在步骤420中,将被保留的的存储器区域的大小(单位缓冲器区域的大小)被通知给资源管理部46B,并且资源管理部46B被请求以保留被用作其自身的模块的缓冲器40A的存储器区域(用于存储图像数据的单位缓冲器区域)。在此处,资源管理部46B被请求,以在第一存储器14与第二存储器54之中,相对于对应于前级的图像处理模块38在图像处理中使用的处理器的存储器保留存储器区域。由此,归因于先前描述图2的处理由资源管理部46B执行,单位缓冲器区域被保留。
此外,在构成其自身的模块的缓冲器40A的单位缓冲器区域之中存在具有空闲空间区域的单位缓冲器区域的情况下,判断在步骤412中为肯定的,并且例行程序进入步骤416。在步骤416中,以与在上文描述的步骤414中同样的方式,识别由为写入请求的源的图像处理模块38设置的单位写入数据量,并且之后,判断在具有空闲空间区域的单位缓冲器区域中的空闲空间区域的大小是否大于或等于所识别的单位写入数据量。如果判断为肯定的,则不需要新保留被用作其自身的模块的缓冲器40A的单位缓冲器区域,并且因此,例行程序移至步骤422,且无任何处理被执行。
如果单位缓冲器区域的大小是单位写入数据量的整数倍数,每次写入请求被从其自身的模块的前级的图像处理模块38输入,则如上文所描述的,步骤412、414的任一判断均为否定或步骤412、416的判断均为肯定的,并且根据需要仅保留被用作缓冲器40A的单位缓冲器区域。
另一方面,在单位缓冲器区域的大小不是单位写入数据量的整数倍数的情况下,通过将单位写入数据量的图像数据重复写入到缓冲器40A(单位缓冲器区域),发生在具有空闲空间区域的单位缓冲器区域处的空闲空间区域的大小小于单位写入数据量的状态(步骤416的判断为肯定的),也如图9A中的示例所示。此外,在本示例性实施例中,也可以利用在其自身的模块处设置的单位读出数据量(或其最大值)作为单位缓冲器区域的大小。然而,如果其大小小于单位写入数据量(即,如果判断在步骤414中为肯定的),则当写入请求被输入时,上述状态总出现。
如上文所描述的,在在具有空闲空间区域的单位缓冲器区域中的空闲空间区域的大小小于单位写入数据量的情况下,在单位写入数据量的图像数据被写入的区域跨布于多个单位缓冲器区域。然而,在本示例性实施例中,因为被用作缓冲器40A的存储器区域以单位缓冲器区域为单位来保留,所以不可能确保在不同的时间保留的单位缓冲器区域将为在实际存储器(第一存储器14)上连续的区域。因此,在图像数据被写入的区域跨布于多个单位缓冲器区域的情况下,即,在在步骤416判断为否定的或在步骤414中判断为肯定的情况下,例行程序移至步骤418。在步骤418中,作为将被保留的存储器区域的大小的单位写入数据量被通知给资源管理部46B,并且资源管理部46B被请求以保留将被用于写入的存储器区域(用于写入的缓冲器区域:也参照图9B)。在此处,资源管理部46B被请求以相对于在第一存储器14与第二存储器54之中的、对应于前级的图像处理模块38在图像处理中使用的处理器的存储器保留存储器区域。然后,当用于写入的缓冲器区域被保留时,在下一个步骤420中,执行被用作缓冲器40A的单位缓冲器区域的保留。
在步骤422中,如果在具有空闲空间区域的单位缓冲器区域中的空闲空间区域的大小大于或等于单位写入数据量,则使得该空闲空间区域成为写入区域。另一方面,如果在具有空闲空间区域的单位缓冲器区域中的空闲空间区域的大小小于单位写入数据量,则使得新保留的用于写入的缓冲器区域成为写入区域。该写入区域的起始地址被通知给为写入请求的源的图像处理模块38,并且图像处理模块38被要求从通知的起始地址顺序地写入为写入的对象的图像数据。由此,为写入请求的源的图像处理模块38将图像数据写入到其起始地址已经被通知的写入区域(单位缓冲器区域或用于写入的缓冲器区域)(也参见图9B)。如上文所描述的,如果图像数据将被写入的区域跨布于多个单位缓冲器区域,则用于写入的缓冲器区域被分离地保留。因此,无论图像数据将被写入的区域是否跨布于多个单位缓冲器区域,将写入区域通知给为写入请求的源的图像处理模块38仅通过给出如上文所描述的其起始地址的通知来实现,并且与图像处理模块38的接口是简单的。
在下一个步骤424中,判断由前级的图像处理模块38将图像数据写入到写入区域是否完成,并且步骤424被重复,直至判断为肯定的为止。当从前级的图像处理模块38给出完成写入的通知时,步骤424的判断为肯定的,并且例行程序移至步骤426。在步骤426中,判断在上文描述的写入处理中的写入区域是否是在先前步骤416中被保留的用于写入的缓冲器区域。如果判断为否定的,则例行程序进入步骤432,且无任何处理被执行。如果步骤426的判断为肯定的,则例行程序进入步骤428。在步骤428中,如图9C中的示例所示,被写入到用于写入的缓冲器区域的图像数据在在具有空闲空间区域的单位缓冲器区域与在先前步骤422中被保留的新的单位缓冲器区域之间被分开的状态下被复制。此外,在步骤430中,在先前步骤418中被保留作为用于写入的缓冲器区域的存储器区域的起始地址被通知给资源管理部46B,并且资源管理部46B被请求释放该存储器区域。
注意,在此处,用于写入的缓冲器区域当需要时被保留并且当不再需要时立刻被释放的方面的解释被给出。然而,在用于存储的单位缓冲器区域的大小不是单位写入数据量的整数倍数的情况下,用于写入的缓冲器区域是绝对必要的。因此,如下结构可以被使用:在该结构中,用于写入的缓冲器区域在初始化时被保留以及并且当缓冲器模块40被删除时被释放。
当从图像处理模块38或缓冲器模块40请求存储器区域的释放时,资源管理部46B执行对应于被选择/设置的存储器管理方法的释放存储器的处理。例如,如果存储器管理方法是第三管理方法,则在图2C的存储器释放请求时的处理(表示其的处理)被执行,并且存储器区域的释放被执行。
在数据写入处理中(图8A和图8B),当在步骤426中判断为否定时,或当在步骤430中请求释放存储器区域之后从资源管理部46B给出释放的完成的通知时,例行程序移至步骤432。在步骤432中,在对应于其自身的模块的后级的各个图像处理模块38的有效数据指针之中,表达有效数据的结束位置的指针分别被更新(也参照图9C)。注意,指针的更新通过将由指针指示的有效数据的结束位置向后移动对应于单位写入数据量的量来实现。在此次由其自身的模块的前级的图像处理模块38写入的图像数据是对应于为处理的对象的图像数据的结尾的数据的情况下,当由前级的图像处理模块38的写入处理完成时,表达为处理的对象的图像数据已经结束的整个处理结束的通知以及写入图像数据的大小被从前级的图像处理模块38输入。因此,当写入处理完成时,在整个处理结束的通知被从前级的图像处理模块38输入的情况下,指针更新通过将有效数据的结束位置向后移动对应于同时所通知的大小的量来执行。
在下一个步骤434中,基于在写入处理完成时是否输入整个处理结束的通知,判断为处理的对象的图像数据到缓冲器40A的写入是否被完成。如果判断为否定的,则例行程序移至步骤438,且无任何处理被执行。然而,如果判断为肯定的,则例行程序进入步骤436,在步骤436中,表达这是为处理的对象的图像数据的结尾的数据最终位置信息被添加到在步骤432中更新的指针(在对应于其自身的模块的后级的各个图像处理模块38的有效数据指针之中的、示出有效数据的结束位置的指针)。之后,例行程序进入步骤438。然后,在步骤438中,等待请求的数量减小1,数据写入处理结束,并且例行程序返回至缓冲器控制处理的步骤378(图6)。
此外,在缓冲器控制处理中(图6),在对应于在步骤382中取出的请求信息的请求的类型被读出的情况下,例行程序从步骤384移至步骤388,并且图10A和图10B中所示的数据读入处理被执行。在数据读出处理中,首先,在步骤450中,基于被包括在从队列取出的请求信息中的请求源识别信息,识别为读出请求的源的图像处理模块38,并且识别由为读出请求的源的图像处理模块38设置的单位读出数据量,并且,基于对应于为读出请求的源的图像处理模块38的有效数据指针,识别对应于为读出请求的源的图像处理模块38的有效数据的缓冲器40A上的开始位置和结束位置。在下一个步骤452中,基于在步骤450中被识别的有效数据的开始位置和结束位置,判断是否存在对应于为读出请求的源的图像处理模块38的、大于或等于单位读出数据量的量的有效数据(可以由为读出请求的源的图像处理模块38读出的图像数据)。
如果该判断为否定的,则例行程序移至步骤454,在步骤454中,判断被存储在缓冲器40A中并且可以由为读出请求的源的图像处理模块38读出的有效数据的结尾是否为是处理的对象的图像数据的结尾。在对应于为读出请求的源的图像处理模块38的有效数据以大于或等于单位读出数据量的量被存储在缓冲器40A中的情况下,在步骤452或步骤454中判断为肯定的并且例行程序进入步骤455,或,虽然被存储在缓冲器40A中并且对应于为读出请求的源的图像处理模块38的有效数据小于单位读出数据量,但是该有效数据的结尾是为处理的对象的图像数据的结尾。在步骤455中,判断由为读出请求的源的模块使用的处理器是否与前级的图像处理模块38在图像处理中使用的处理器相同。如果在步骤455中判断为肯定的,则例行程序移至步骤456。在步骤456中,基于在先前步骤450中识别的有效数据的开始位置,识别存储着有效数据的起始部分的图像数据的单位缓冲器区域,并且判断被存储在识别的单位缓冲器区域中的有效数据的数据量是否大于或等于在步骤450中识别的单位读出数据量。由此,判断为此次读出的对象的有效数据是否跨布于多个单位缓冲器区域。
如果步骤456的判断为否定的,则例行程序进入步骤462,且无任何处理被执行。然而,如图11A中所示,例如,如下情况并不限制于为此次读出的对象的有效数据被存储在在实际存储器(第一存储器14)上连续的区域中:在这些情况下,被存储在存储有效数据的起始部分的图像数据的单位缓冲器区域中的有效数据的数据量小于单位读出数据量,并且为此次读出的对象的有效数据跨布于多个单位缓冲器区域。因此,如果在步骤456中判断为肯定的,则例行程序移至步骤458,在步骤458中,对应于为读出请求的源的图像处理模块38的单位读出数据量,被作为将被保留的存储器区域的大小,通知给资源管理部46B,并且资源管理部46B被请求以保留在读出中使用的存储器区域(用于读出的缓冲器区域:也参见图9B)。当用于读出的缓冲器区域被保留时,在下一个步骤460中,为读出的对象并且被存储在多个单位缓冲器区域上的有效数据被复制到在步骤458中被保留的用于读出的缓冲器区域(也参照图11B)。
在步骤462中,如果为读出的对象的有效数据被存储在单个单位缓冲器区域中,则使得在该单位缓冲器区域之中的、存储为读出的对象的有效数据的区域成为读出区域。另一方面,如果为读出的对象的有效数据被存储在多个单位缓冲器区域上,则使得用于读出的缓冲器区域成为读出区域。该读出区域的起始地址被通知给为读出请求的源的图像处理模块38,并且图像处理模块38被要求从通知的起始地址顺序地读出图像数据。由此,为读出请求的源的图像处理模块38执行从其起始地址被通知的读出区域(单位缓冲器区域或用于读出的缓冲器区域)读出图像数据(也参见图11C)。注意,在情况下,为读出的对象的有效数据是对应于在为处理的对象的图像数据的结尾的数据的情况下(即,在为读出的对象的有效数据的结束位置与由对应于为读出请求的源的图像处理模块38的有效数据指针指示的有效数据的结束位置一致,并且数据最终位置信息已经被添加到该指针的情况下),在要求读出图像数据时,为读出的对象的有效数据的大小以及还有这是为处理的对象的图像数据的结尾的事实被通知给为读出请求的源的图像处理模块38。
如上文所描述的,在为读出的对象的有效数据被存储在多个单位缓冲器区域上的情况下,为读出的对象的有效数据被复制到被分离地保留的用于读出的缓冲器区域。因此,无论为读出的对象的有效数据是否被存储在多个单位缓冲器区域上,将读出区域通知给为读出请求的源的图像处理模块38仅通过给出如上文所描述的其起始地址的通知来实现,并且与图像处理模块38的接口是简单的。注意,在其自身的模块是由应用程序32产生的缓冲器模块40的情况下,被用作缓冲器40A的存储器区域(单位缓冲器区域的集合)是连续的区域。因此,在执行步骤456的判断之前,可以判断缓冲器标记是否为1,以及如果该判断为肯定的,则例行程序可以继续移至步骤462,无论为读出的对象的有效数据是否被存储在多个单位缓冲器区域上。
在下一个步骤464中,判断由为读出请求的源的图像处理模块38从读出区域读出图像数据是否完成,并且步骤464被重复,直至该判断为肯定的为止。当从为读出请求的源的图像处理模块38通知读出完成时,步骤464的判断为肯定的,并且例行程序进入步骤467,在步骤467中,判断在上文描述的读出处理中的读出区域是否为在先前步骤458中被保留的用于读出的缓冲器区域或用于传递的缓冲器区域。如果判断为否定的,则例行程序进入步骤470,且无任何处理被执行。如果在步骤467中判断为肯定的,则例行程序移至步骤469,在步骤469中,被作为上述用于传递的缓冲器区域的读出的缓冲器区域保留的存储器区域的大小和起始地址被通知给资源管理部46B,并且资源管理部46B被请求释放该存储器区域。同样地,对于用于读出的缓冲器区域,以与用于写入的缓冲器区域相同的方式,如果用于存储的单位缓冲器区域的大小不是单位读出数据量的整数倍数,则用于读出的缓冲器区域是绝对必要的。因此,如下结构可以被使用:在该结构中,用于读出的缓冲器区域在初始化时被保留而当删除缓冲器模块40时被释放。
在下一个步骤470中,在对应于为读出请求的源的图像处理模块38的有效数据指针之中,指示有效数据的开始位置的指针被更新(也参照图11C)。注意,指针的更新通过将由指针指示的有效数据的开始位置向后移动对应于单位读出数据量的量来实现。然而,如果为此次读出的对象的有效数据是对应于为处理的对象的图像数据的结尾的数据,则指针更新通过将有效数据的起始位置向后移动对应于为此次读出的对象的有效数据的大小的量来执行,为此次读出的对象的有效数据的大小也被通知给为读出请求的源的图像处理模块38。
在步骤472中,对应于后级的各个图像处理模块38的有效数据指针分别被参照,并且归因于步骤470的指针更新,判断由后级的相应的图像处理模块38读出存储的图像数据已经被全部完成的单位缓冲器区域,即没有存储有效数据的单位缓冲器区域,是否已经出现在构成缓冲器40A的单位缓冲器区域之中。如果判断为否定的,则例行程序进入步骤478,且无任何处理被执行。如果判断为肯定的,例行程序进入步骤474,在步骤474中,判断缓冲器标记是否为1。如果其自身的模块是由模块产生部44产生的缓冲器模块40,则判断为否定的,并且例行程序进入步骤476,在步骤476中,资源管理部46B被请求以释放没有存储有效数据的单位缓冲器区域。
注意,如果其自身的模块是由应用程序32产生的缓冲器模块40,则在步骤474中判断为肯定的,并且例行程序移至步骤478,且无任何处理被执行。因此,如果由用户指定的缓冲器区域(存储器区域)被用作缓冲器40A,则该缓冲器区域被存储而非被释放。然后,在步骤478中,等待请求的数量减小1,数据读出处理结束,并且例行程序返回至缓冲器控制处理的步骤378(图6)。
另一方面,在如下情况下:被存储在缓冲器40A中且可以由为读出请求的源的图像处理模块38读出的有效数据的数据量小于单位读出数据量,并且可以被读出的有效数据的结尾不是为处理的对象的图像数据的结尾(即,在图15B的(4)中感测到不存在可读的有效数据的情况下),步骤452和步骤454的判断均为否定的,并且例行程序进入步骤480,在步骤480中,请求新的图像数据的数据请求被输出到流程管理部46A(也参见图15B的(5))。在这种情况下,处理请求由流程管理部46A输入到其自身的模块的前级的图像处理模块38。此外,在步骤482中,在先前步骤382(图6)中从队列取出的请求信息再次被登记在原始队列的结尾处,并且数据读出处理结束。
如图6中所示,当数据读出处理结束时,例行程序返回至步骤378(图6)。因此,在这种情况下,如果没有其它请求信息被登记在队列中,则再次被登记在队列的结尾处的请求信息立即再次被从队列取出,并且图10A和图10B的数据读出处理再次被执行。如果其它请求信息被登记在队列中,则该其他请求信息被取出并且对应于其的处理被执行,并且之后,再次被登记在队列的结尾处的请求信息再次被从队列取出,并且图10A和图10B的数据读出处理再次被执行。因此,在如下情况下:来自后级的图像处理模块38的读出请求被输入,但是可以由为读出请求的源的图像处理模块38读出的有效数据的数据量小于单位读出数据量,并且可以被读出的有效数据的结尾不是为处理的对象的图像数据的结尾,则对应的请求信息被存储并且数据读出处理反复地被执行,直至可以被读出的有效数据的数据量变成大于或等于单位读出数据量,或感测到可以被读出的有效数据的结尾是为处理的对象的图像数据的结尾为止(即,直至步骤452或步骤454的判断为肯定的为止)。
此外,如果在步骤455中判断为否定的,则例行程序移至步骤484。在步骤484中,资源管理部46B被请求以保留存储器。在此处,资源管理部46B被请求以在对应于读出请求的源在图像处理中使用的处理器的存储器空间中保留用于传递的缓冲器区域。如参照图2B等解释的,接收该请求的资源管理部46B在对应于读出请求的源在图像处理中使用的处理器的存储器空间中保留用于传递的缓冲器区域。注意,在本示例性实施例中,用于传递的缓冲器区域具有大于或等于单位读出数据量的大小,并且未被保留在多个区域上。
在步骤486中,传递处理被执行。在此处,从单位缓冲器区域中的、存储为读出的对象的有效数据的区域读出图像数据,并且将其顺次传递至所保留的用于传递的缓冲器区域。在为读出的对象的有效数据跨布于多个单位缓冲器区域的情况下,图像数据被顺次从该多个单位缓冲器区域读出,并且被传递至用于传递的缓冲器区域。当传递结束时,对应于为读出请求的源的图像处理模块38的有效数据指针被以与上文所描述的同样的方式更新。注意,在DMA(直接存储器存取)控制器等被设置并且传递处理被构成为使得DMA传递是可能的情况下,DMA传递指令可以被从处理器输出到DMA控制器,并且之后,传递处理可以被执行而不经过处理器。
接着,例行程序进入步骤462。如果在步骤455判断为否,并且步骤462在步骤484和步骤486之后被执行,在步骤462中,用于传递的缓冲器区域的起始地址作为读出区域的地址被通知给读出请求的源,并且读出请求的源被要求从所通知的起始地址顺序地读出图像数据。由此,读出请求的源从对应于读出请求的源本身使用的处理器的存储器空间读出图像数据,并且可以在图像处理中使用该图像数据。
参照图22描述传递处理。如图22A中所示,给出缓冲器模块40的前级的图像处理模块38的描述,该图像处理模块38为通过使用第一处理器(CPU12)执行缓冲器控制处理的模块,并且为读出的对象的有效数据被存储在单个单位缓冲器区域中。如果后级的图像处理模块38使用第二处理器(GPU52),如图22B中所示,则在第二存储器54中保留用于传递的缓冲器区域。接着,有效数据被从该单位缓冲器区域读出,并且被传递至用于传递的缓冲器区域。后级的模块从在后级的模块使用的存储器空间中保留的、用于传递的缓冲器的起始地址读出有效数据,并且可以在图像处理中使用有效数据。
图23是示意性地示出关于本示例性实施例的移交图像数据的方法的图示。在如下情况下的处理在图23A中示意性地示出:在前级的图像处理模块38(在下文中,由附图标记M1指示)处使用的处理器与在后级处的图像处理模块38(在下文中,由附图标记M2指示)处使用的处理器是不同的。图像处理模块M1使用第一处理器(CPU12),而图像处理模块M2使用第二处理器(GPU52)。这时,被连接在图像处理模块M1与图像处理模块M2之间的缓冲器模块40(在下文中,由附图标记B1指示)将在第二存储器54中保留用于传递的缓冲器,并且将被写入在被保留在第一存储器14中的缓冲器40A(单位缓冲器区域)中的图像数据传递到用于传递的缓冲器区域。图像处理模块M2读出被写入在用于传递的缓冲器区域中的图像数据,并且执行图像处理。
在如下情况下的处理在图23B中示意性地示出:在前级的图像处理模块M1处使用的处理器与在后级的图像处理模块M2处使用的处理器是相同的。在这种情况下,缓冲器模块B1不保留任何用于传递的缓冲器区域,并且将存储器区域的起始地址通知给后级的图像处理模块M2,在该存储器区域中存储有被保留在第一存储器14中的缓冲器40A的有效数据。后级的图像处理模块M2从通知的起始地址顺序地读出图像数据,并且执行图像处理。
由此,图像处理部可以有效率地执行图像处理,无多余的传递处理发生。
注意,虽然其细节稍后被描述,但是当数据请求被从缓冲器模块40输入时,流程管理部46A将处理请求输入到为数据请求的源的缓冲器模块40的前级的图像处理模块38(也参照图15B中的(6))。归因于由该处理请求的输入触发并且在前级的图像处理模块38的控制部38B处被执行的处理,当前级的图像处理模块38变得能够将图像数据写入到缓冲器模块40,归因于从前级的图像处理模块38输入的写入请求,上文描述的数据写入处理(图8A和图8B)被执行,并且图像数据被从前级的图像处理模块38写入到缓冲器模块40的缓冲器40A(也参照图15B的(7)、(8))。由此,由后级的图像处理模块38从缓冲器40A读出图像数据被执行(也参照图15B的(9))。
此外,虽然在图15B中未示出,但是在用于传递的缓冲器区域如上文所描述的被分离地保留的情况下,执行图像数据从缓冲器40A的缓冲器区域到用于传递的缓冲器区域的传递,并且执行由后级的图像处理模块38从用于传递的缓冲器读出图像数据。
如上文所描述的,在关于本示例性实施例的缓冲器控制处理中,每次写入请求被从前级的图像处理模块38输入或读出请求被从后级的图像处理模块输入,输入的请求作为请求信息被登记在队列中,并且请求信息被从队列逐一取出并且被处理。因此,另外在读出请求在数据写入处理的执行期间被输入或写入请求在数据读出处理的执行期间被输入的情况下,停止对应于所输入请求的处理的执行的排他控制被执行,直至正被执行的处理完成并且对应于输入请求的处理可以被执行的状态出现为止。由此,即使计算机10的CPU12并行执行对应于构成图像处理部50的各个模块的过程或线程,可以避免归因于多个请求同时或基本上同时被输入到单个缓冲器模块40而发生问题。因此,计算机10的CPU12可以并行地执行对应于各个模块的过程或线程。当然,缓冲器模块可以被实现为常用程序或对象。
接着,将给出关于如下的描述:每次处理请求被从流程管理部46A输入到构成图像处理部50的图像处理模块38时,由图像处理模块38的控制部38B执行的图像处理模块控制处理(图13)。注意,在此处假设,在图像数据供应部22是模块的情况下,由被连接紧跟着该图像数据供应部22的图像处理模块38使用的处理器与该图像数据供应部22使用的处理器相同,并且,在图像输出部24是模块的情况下,由被紧邻连接在该图像输出部24前面的图像处理模块38使用的处理器与该图像输出部24使用的处理器相同。
在图像处理模块控制处理中,首先,在步骤284中,在模块(缓冲器模块40、或图像数据供应部22、图像处理模块38等)存在于其自身的模块的前级处的情况下,从前级的该模块请求数据(图像数据,或诸如分析等的图像处理的处理结果)。注意,如果前级的模块是缓冲器模块40并且图像数据被请求,则其自身的模块给出识别其自身的模块在图像处理中使用的处理器的识别信息的通知连同请求。在下一个步骤286中,判断是否可以从前级的模块获取数据。如果判断为否,则在步骤288中,判断是否已经给出整个处理结束的通知。如果步骤288的判断为否,则例行程序返回至步骤286,并且步骤286和步骤288被重复,直至变得可以从前级的模块获取数据。如果判断在步骤286中为肯定的,则在步骤290中,执行从前级的模块获取数据的数据获取处理。
在此处,在其自身的模块的前级的模块是缓冲器模块40的情况下,当在先前步骤284中数据被请求(读出请求)并且给出关于其自身的模块使用的处理器的通知时,立即地,从缓冲器模块40通知读出区域的起始地址(在用于传递的缓冲器区域被保留的情况下,通知该用于传递的缓冲器区域的起始地址),并且要求图像数据的读出(也参见图10B中的步骤462),如果存在如下状态的话:可以被读出的有效数据以大于或等于单位读出数据量的量被存在缓冲器模块40的缓冲器40A中,或可以被读出的有效数据的结尾与为处理的对象的图像数据的结尾一致。如果不存在这样的状态,随着缓冲器模块40的前级的图像处理模块38将图像数据写入到该缓冲器模块40的缓冲器40A,状态改变至上述状态,并且之后,从缓冲器模块40通知读出区域的起始地址(在用于传递的缓冲器区域被保留的情况下,通知该用于传递的缓冲器区域的起始地址),并且要求图像数据的读出(也参见图10B的步骤462)。由此,步骤286的判断为肯定,并且例行程序进入步骤290。在步骤290中,执行从读出区域读出单位读出数据量(或小于该数据量的数据量)的图像数据的数据获取处理,该读出区域的起始地址已被从前级的缓冲器模块40通知(也参照图15A中的(3))。
此外,如果其自身的模块的前级的模块是图像数据供应部22,当在先前步骤284中输出数据请求时,立即从前级的图像数据供应部22给出存在可以获取图像数据的状态的通知。由此,步骤286的判断为肯定,并且例行程序进入步骤290,在步骤290中,执行从前级的图像数据供应部22获取单位读出数据量的图像数据的图像数据获取处理。此外,如果其自身的模块的前级的模块是图像处理模块38,当在先前步骤284中输出数据请求(处理请求)时,如果存在前级的图像处理模块38可以执行图像处理的状态,则给出存在归因于写入请求被输入可以获取数据(图像处理的结果)的状态的通知。因此,步骤286的判断为肯定的,并且例行程序进入步骤290。在步骤290中,归因于前级的图像处理模块38给出数据将被写入的缓冲器区域的地址的通知并且要求写入,执行将从前级的图像处理模块38输出的数据写入到该缓冲器的数据获取处理。
在下一个步骤292中,控制部38B判断多个模块是否连接在其自身的模块的前级处。如果判断为否定的,则例行程序移至步骤296,且无任何处理被执行。如果判断为肯定的,则例行程序进入步骤294,在步骤294中,判断数据是否已经被从连接在前级处的所有模块获取。如果判断在步骤294中为否定的,则例行程序返回至步骤284,并且步骤284至步骤294被重复,直至步骤294的判断为肯定的为止。当获取从前级的模块获取的所有数据时,步骤292的判断的为否定的或步骤294的判断为肯定的,并且例行程序移至步骤296。
接着,在步骤296中,控制部38B向其自身的模块的后级的模块请求用于数据输出的区域。在步骤298中,判断被重复,直至数据输出区域可以被获取(即,直至数据输出区域的起始地址被通知)。注意,如果后级的模块是缓冲器模块40,则上述对于用于数据输出的区域的请求通过将写入请求输出到该缓冲器模块40来执行。当数据输出区域(如果模块的后级是缓冲器模块40,则为其起始地址被从该缓冲器模块40通知的写入区域)可以被获取(也参照图15A中的(4))时,在下一个步骤300中,在先前数据获取处理中获取的数据以及从后级的模块获取的数据输出区域(的起始地址)被输入到图像处理引擎38A。预定的图像处理在输入的数据上被执行(也参见图15A的(5)),并且数据在处理之后被写入到数据输出区域(也参见图15A的(6))。当单位读出数据量的数据输入到图像处理引擎38A被完成并且从图像处理引擎38A输出的数据均被写入到数据输出区域时,在下一个步骤302中,通知后级的模块输出被完成。
归因于上文描述的步骤284至步骤302,在图像处理模块38处的单位处理数据量的数据的处理(即,单位处理)被完成。然而,存在如下情况:单位处理的执行次数由流程管理部46A在被从流程管理部46A输入到图像处理模块38的处理请求中指定。因此,在步骤304中,判断单位处理的执行的次数是否已经达到由输入的处理请求指示的执行次数。如果指示的单位处理的执行次数是一次,则该判断无条件地为肯定的。然而,如果指示的单位处理的执行次数大于或等于2,则例行程序返回至步骤284,并且步骤284至步骤304被重复,直至步骤304的判断为肯定的为止。当步骤304的判断为肯定的时,则例行程序进入步骤306。在步骤306中,通过将处理完成的通知输出到流程管理部46A,控制部38B通知流程管理部46A:对应于输入的处理请求的处理被完成,并且图像处理模块控制处理结束。
此外,当处理被执行直至为处理的对象的图像数据的结束为止时,归因于每次处理请求被从流程管理部46A输入时重复上文描述的处理,从前级的模块给出为处理的对象的图像数据的结束的通知。由此,步骤288的判断变成肯定的,并且例行程序移至步骤308。在步骤308中,控制部38B将整个处理完成的通知输出到流程管理部46A以及到后级的模块,这意味着为处理的对象的图像数据的处理已经完成。此外,在下一个步骤310中,自模块删除处理(稍后将被描述)被执行,并且图像处理模块控制处理结束。
注意,执行诸如倾斜角感测处理等的图象分析处理的图像处理引擎38A常常被构造为使得图像处理结果不以单位读出数据量为单位来输出,并且图像处理结果在所有的为处理的对象的图像数据已经被输入之后被输出。在具有这样的图像处理引擎38A的图像处理模块38的控制部38B处,图像处理模块控制处理的步骤296和步骤298(图13)以及在步骤300中将数据输出到后级的模块不被执行,并且当判断在步骤288中为肯定的时,归因于为处理的对象的图像数据正被处理到最后,从图像处理引擎38A输出的数据(图像处理结果)被输出到其自身的模块的外部(到流程管理部46A或应用程序32)。然后,如果存在需要上述图像处理结果的另一图像处理模块38(例如,基于倾斜角感测处理的结果执行图像旋转处理的图像处理模块38等),则上述图像处理结果被从流程管理部46A或应用程序32输入到该图像处理模块38。
另一方面,在块单位处理被指定作为图像处理的执行形式的情况下,当流程管理部46A由应用程序32启动时,流程管理部46A执行图16A中所示的块单位控制处理1。此外,如上文所描述的,在将来自流程管理部46A的处理请求输入到图像处理部50的各个图像处理模块38的过程中,可以指定单位处理的执行次数。在块单位控制处理1的步骤500中,在一次的处理请求中指定的单位处理的执行次数被针对各个图像处理模块38中的相应一个设置。每一次的处理请求的单位处理的该执行次数可以被确定,使得,例如,在为处理的对象的所有图像数据正被处理的时间期间将处理请求输入到各个图像处理模块38的次数被平均,或可以根据另一标准来确定。然后,在下一个步骤502中,处理请求被输入到图像处理部50的末级的图像处理模块38(也参照图18的(1)),并且块单位控制处理1结束。
在此处,在图18中所示的图像处理部50中,当处理请求被从流程管理部46A输入到末级的图像处理模块384时,图像处理模块384的控制部38B将读出请求输入到前级的缓冲器模块403(参照图18的(2))。这时,无可以由图像处理模块384读出的有效数据(图像数据)被存储在缓冲器模块403的缓冲器40A中。因此,缓冲器模块403的缓冲器控制部40B将数据请求输入到流程管理部46A(参照图18的(3))。
在图像处理的执行形式是块单位处理的情况下,每次数据请求被从缓冲器模块40输入时,流程管理部46A执行图16B中所示的块单位控制处理2。在该块单位控制处理2中,在步骤504中,基于登记在图4B中所示的表中的信息,为数据请求的输入源的缓冲器模块40(在此处,缓冲器模块403)的前级的图像处理模块38(在此处,图像处理模块383)被识别,并且处理请求被输入到所识别的前级的图像处理模块38(参照图18的(4)),并且处理结束。
当处理请求被输入时,图像处理模块383的控制部38B将读出请求输入到前级的缓冲器模块402(参照图18的(5))。因为可以被读出的图像数据也未被存储在缓冲器模块402的缓冲器40A中,所以缓冲器模块402的缓冲器控制部40B将数据请求输入到流程管理部46A(参照图18的(6))。另外,当数据请求被从缓冲器模块402输入时,流程管理部46A再次执行上文描述的块单位控制处理2,并且从而将处理请求输入到其前级的图像处理模块382(参照图18的(7))。图像处理模块382的控制部38B将读出请求输入到前级的缓冲器模块401(参照图18的(8))。此外,因为可以被读出的图像数据也未被存储在缓冲器模块401的缓冲器40A中,所以缓冲器模块401的缓冲器控制部40B也将数据请求输入到流程管理部46A(参照图18的(9))。另外,当数据请求被从缓冲器模块401输入时,流程管理部46A再次执行上文描述的块单位控制处理2,并且从而将处理请求输入到其前级的图像处理模块381(参照图18的(10))。
在此处,图像处理模块381的前级的模块是图像数据供应部22。因此,通过将数据请求输入到图像数据供应部22,图像处理模块381的控制部38B从图像数据供应部22获取单位读出数据量的图像数据(参照图18的(11))。由图像处理引擎38A在获取的图像数据上执行图像处理而获得的图像数据被写入到后级的缓冲器模块401的缓冲器40A(参照图18的(12))。注意,当图像处理模块381的控制部38B完成将图像数据写入到后级的缓冲器模块401的缓冲器40A时,控制部38B将处理完成的通知输入到流程管理部46A。
在图像处理的执行形式是块单位处理的情况下,每次处理完成的通知被从图像处理模块38输入时,流程管理部46A执行图16C中所示的块单位控制处理3。在该块单位控制处理3中,在步骤506中,判断处理完成的通知的源是否为图像处理部50的末级的图像处理模块38。如果判断在这种情况下为否定的,则处理结束,且无任何处理被执行(这同样适用于处理完成的通知被从图像处理模块382、383输入的情况)。
此外,当可以由后级的图像处理模块382读出而且具有大于或等于单位读出数据量的量的有效数据被写入时,缓冲器模块401的缓冲器控制部40B要求图像处理模块382读出。伴随这种情况,图像处理模块382的控制部38B从缓冲器模块401的缓冲器40A读出单位读出数据量的图像数据(参照图18的(13)),并且将由图像处理引擎38A在获取的图像数据上执行图像处理而获得的图像数据写入到后级的缓冲器模块402的缓冲器40A(参照图18的(14))。当可以由后级的图像处理模块383读出而且具有大或等于单位读出数据量的量的有效数据被写入时,缓冲器模块402的缓冲器控制部40B要求图像处理模块383读出。图像处理模块383的控制部38B从缓冲器模块402的缓冲器40A读出单位读出数据量的图像数据(参照图18的(15)),并且将由图像处理引擎38A在获取的图像数据上执行图像处理而获得的图像数据写入到后级的缓冲器模块403的缓冲器40A(参照图18的(16))。
此外,当可以由后级的图像处理模块384读出而且具有大于或等于单位读出数据量的量的有效数据被写入时,当需要时,缓冲器模块403的缓冲器控制部40B执行从缓冲器40A到用于传递的缓冲器的传递处理,并且要求图像处理模块384读出。伴随这种情况,图像处理模块384的控制部38B从缓冲器模块403的缓冲器40A(或在传递处理之后从用于传递的缓冲器)读出单位读出数据量的图像数据(参照图18的(17)),并且将由图像处理引擎38A在获取的图像数据上执行图像处理而获得的图像数据输出到为后级的模块的图像输出部24(参照图18的(18))。此外,当图像处理模块384的控制部38B安成将图像数据写入到图像输出部24时,控制部38B将处理完成的通知输入到流程管理部46A(参照图18中的(19))。在这种情况下,上述块单位控制处理3在步骤506中的判断为肯定的,并且例行程序进入步骤508,在步骤508中,处理请求再次被输入到为末级图像处理模块38的图像处理模块384,并且之后,处理结束。
归因于处理请求被再次输入到为末级的图像处理模块384,上文描述的处理顺序再次被重复,并且在为处理的对象的图像数据上顺次地执行采用块单位的执行形式的图像处理。当从图像数据供应部22供应的图像数据到达为处理的对象的图像数据的结尾时,将从各个图像处理模块38到流程管理部46A的整个处理结束的通知的输入从在前级处的图像处理模块38顺次地执行。
在图像处理的执行形式是块单位处理的情况下,每次整个处理结束的通知被从图像处理模块38输入时,流程管理部46A执行图16D中所示的块单位控制处理4。在该块单位控制处理4中,在步骤510中,判断为整个处理结束的通知的输入的源的图像处理模块38是否为末级的图像处理模块38。如果判断为否定的,则处理结束,且无任何处理被执行。然而,归因于已经由在为处理的对象的图像数据上执行的必要的图像处理获得的所有的图像数据被输出到图像输出部24,在整个处理结束的通知被从末级的图像处理模块38输入的情况下,步骤510的判断为肯定的,并且例行程序移至步骤512。在步骤512中,图像处理的完成被通知给应用程序32(也参照图3的步骤180),并且块单位控制处理结束。然后,已经被通知图像处理的完成的应用程序32通知用户图像处理已经被完成(也参照图3中的步骤182)。
以这种方式,在块单位处理中,被输入到末级的图像处理模块38的处理请求被向后传递到前级的图像处理模块38。当处理请求到达最前级的图像处理模块38时,通过如下的流来执行一系列的图像处理:其中,在最前级的图像处理模块38处执行图像处理,数据被写入到后级的缓冲器模块40,并且如果由此使得数据是充分的,则处理进入到后级的模块。
此外,在页面单位处理被指定作为图像处理的执行形式的情况下,当流程管理部46A由应用程序32启动时,流程管理部46A执行图17A中所示的页面单位控制处理1。在页面单位控制处理1中,以与在上文描述的块单位控制处理1(图16A)中同样的方式,针对各个图像处理模块38中的每一个设置在一次的处理请求中指定的单位处理的执行次数(步骤540)。在下一个步骤542中,处理请求被输入到在图像处理部50中的末级的图像处理模块38(参照图18的(1)),并且处理结束。此外,在图像处理的执行形式是页面单位处理的情况下,每次数据请求被从缓冲器模块40输入时,流程管理部46A执行图17B中所示的页面单位控制处理2。在页面单位控制处理2中,以与在上文描述的块单位控制处理2(图16B)中同样的方式,在步骤544中,基于登记在图4B中所示的表中的信息,为数据请求的输入的源的缓冲器模块40的前级的图像处理模块38被识别,处理请求被输入到已识别的前级的图像处理模块38,并且处理结束。
以这种方式,即使图像处理的执行形式是页面单位处理,流程管理部46A当由应用程序32启动时执行的处理,以及每次数据请求被从缓冲器模块40输入时流程管理部46A执行的处理,与当图像处理的执行形式是块单位处理的时候相同。因此,也在页面单位处理中,在处理请求被从流程管理部46A输入到图像处理部50的末级的图像处理模块38之后,如图18的(2)至(10)中所示,数据请求从处理请求被输入到的图像处理模块38到前级的缓冲器模块40的输入,以及数据请求从数据请求被输入到的缓冲器模块40到流程管理部46A的输入,以及处理请求从流程管理部46A到该缓冲器模块40的前级的图像处理模块的伴随输入,从图像处理部50的末级的图像处理模块38朝在图像处理部50的最前级处的图像处理模块38顺次地进行。
此外,当将处理请求被从流程管理部46A输入时,图像处理部50的最前级的图像处理模块381从图像数据供应部22获取单位读出数据量的图像数据(参照图18的(11))。图像处理模块381将由图像处理引擎38A在获取的图像数据上执行图像处理而获得的图像数据写入到后级的缓冲器模块401的缓冲器40A(参照图18的(12)),并且将处理完成的通知输入到流程管理部46A。然而,在图像处理的执行形式是页面单位处理的情况下,每次处理完成的通知被从图像处理模块38输入时,流程管理部46A执行图17C中所示的页面单位控制处理3。在页面单位控制处理3中,在步骤546中,处理请求被再输入到为处理完成的通知的源的图像处理模块38,并且处理结束。以这种方式,在页面单位控制处理中,在直至将处理完成的通知输入到流程管理部46A的特定图像处理模块38在为处理的对象的图像数据上完成图像处理的时间段期间,每次处理完成的通知被从该特定图像处理模块38输入时,处理请求仅被反复地输入到该特定图像处理模块38。
当图像处理模块381完成为处理的对象的图像数据的图像处理,并且为处理的对象并且已经经历在图像处理模块381处的图像处理的所有图像数据被存储在缓冲器模块401的缓冲器40A中时,整个处理结束的通知被从图像处理模块381输入到流程管理部46A。在图像处理的执行形式是页面单位处理的情况下,每次整个处理结束的通知被从图像处理模块38输入时,流程管理部46A执行图17D中所示的页面单位控制处理4。在该页面单位控制处理4中,在步骤548中,判断整个处理结束的的通知的源是否为图像处理部50的末级的图像处理模块38。如果判断为否定的,则例行程序移至步骤550,在步骤550中,基于登记在图4B中所示的表中的信息,识别在为整个处理结束的通知的源的图像处理模块38之后的下一个图像处理模块38,处理请求被输入到该识别的下一个图像处理模块38,并且处理结束。
以这种方式,在页面单位控制处理中,被输入到末级的图像处理模块38的处理请求被向后传递到更前级的图像处理模块38,并且在到达最前级的图像处理模块38之后,处理请求仅被反复地输入到最前级的图像处理模块38。当在为处理的对象的所有图像数据的该图像处理模块38处的图像处理完成时,在为处理的对象的所有图像数据上的图像数据在下一个图像处理模块38处被执行。由于该处理顺序地推进到后级的图像处理模块38,导致执行一系列图像处理操作。因此,归因于由在为处理的对象的图像数据上执行需要的图像处理而获得的所有的图像数据被输出到图像输出部24,当整个处理结束的通知被从末级的图像处理模块38输入时,页面单位控制处理4(图17D)的步骤548的判断为肯定的,并且例行程序进入步骤552。在步骤552中,图像处理的完成被通知给应用程序32(也参照图3的步骤180),并且页面单位控制处理结束。然后,被通知图像处理的完成的应用程序32通知用户图像处理被完成(也参照图3的步骤182)。
注意,在图17中所示的页面单位控制处理中,处理请求被反复地输入到的图像处理模块38在整个处理结束的通知从图像处理模块输入之时被切换。然而,本发明不仅限于此。如下结构可以被使用:在该结构中,处理请求被反复地输入到的图像处理模块38在处理完成通知从不同的图像处理模块38输入之时被切换。
此外,在上文的描述中,将处理请求输入到末级的图像处理模块38由流程管理部46A执行。然而,本发明不仅限于此。流程管理部46A可以保持被定位在管线的末级处或在有向非循环图的多个最终点处的模块,并且执行处理请求,或应用程序32可以保持该模块并且执行处理请求。或,如在上文描述的图5B的示例中,在如下情况下:在模块产生部44的内部处,执行倾斜角感测处理的图像处理模块以及执行图像旋转处理的图像处理模块被组合从而形成倾斜校正处理模块,倾斜角信息在产生图像旋转处理模块时被需要作为处理参数。因此,也存在一种方法,在该方法中,在倾斜校正模块产生部的内部处,处理请求被反复地向倾斜角感测处理模块发出并且整个图像被处理,并且因此获得的倾斜角信息作为处理参数被提供给图像旋转处理模块。
接着,在为处理的对象的图像数据上的图像处理已经被完成之后所执行的图像处理部50的删除的描述被给出。在图像处理模块控制处理的步骤308中(图13),各个图像处理模块38的控制部38B将整个处理结束的通知输出到流程管理部46A并且输出到后级的模块,并且之后,在下一个步骤310中,执行自模块删除处理。
如图14中所示,在自模块删除处理中,首先,在步骤320中,控制部38B请求资源管理部46B释放在先前步骤254中保留的存储器区域(图12)。由此,归因于在存储器释放请求(图2C)在资源管理部46B处被执行时的处理,该存储器区域被释放。在下一个步骤322中,判断是否存在除其自身的模块通过资源管理部46B保留的存储器以外的资源。如果判断为否定的,则例行程序移至步骤326,且无任何处理被执行。如果判断中为肯定的,则例行程序移至步骤324。在步骤324中,控制部38B将其自身的模块的识别信息通知给资源管理部46B,并且请求释放除其自身的模块所保留的存储器以外的资源。由此,归因于在资源管理部46B处执行资源释放请求时的处理(图2E),该资源被释放。
在自模块删除处理中(图14),如果判断在步骤322中为否定的,或,如果在步骤324中请求资源管理部46B以释放除存储器以外的资源之后从资源管理部46B给出资源释放完成的通知,则例行程序进入步骤326。在步骤326中,控制部38B输入删除通知,该删除通知用于将删除其自身的模块的处理将被执行的通知给其自身的模块的前级的模块、其自身的模块的后级的模块、以及流程管理部46A。然后,在步骤328中,删除其自身的模块的处理被执行,并且图14的自模块删除处理(即,图13的步骤310)结束。注意,其自身的模块的删除可以通过结束对应于其自身的模块的过程或线程或删除对象来实现。
注意,在由缓冲器模块40的缓冲器控制部40B执行的缓冲器控制处理中(图6),当删除通知被从其自身的模块的前级或后级的图像处理模块38输入时,判断在步骤380中为肯定的,并且例行程序移至步骤390。在步骤390中,在为删除通知的输入的源的模块被存储之后,判断删除通知是否已经被从其自身的模块的前级和后级的所有模块输入。如果判断为否定的,则例行程序返回至步骤378,并且步骤378和步骤380也如上文所描述的被重复。此外,当删除通知被从其自身的模块的前级和后级的所有模块输入时,判断在步骤390中为肯定的,并且例行程序进入步骤392。在步骤392中,通过将删除通知输入到流程管理部46A,缓冲器控制部40B给出删除其自身的模块的处理将被执行的通知。然后,在下一个步骤394中,用于删除其自身的模块的处理被执行,并且缓冲器控制处理(图6)结束。
最后,在图像处理部50在执行图像处理的中途期间发生误差的情况下的处理将被描述。当图像处理部50在执行图像处理的中途期间发生误差时,处理管理部46的偏差管理部46C执行归因于中断出现的图19中所示的偏差发生中断处理。在该偏差发生中断处理中,首先,在步骤570中,诸如已经发生的偏差的类型、发生的位置等的误差信息被获取。此外,在本示例性实施例中,存储部20存储表达其中结合有计算机10的装置的类型和结构等的装置环境信息,在计算机10中安装有图像处理程序组34。在下一个步骤572中,该装置环境信息被从存储部20等获取,并且对应于由获取的装置环境信息表达的装置环境的偏差通知方法被确定。
例如,如果计算机10是诸如PC等的独立计算机,则各种信息可以被一次显示于的显示器被设置作为显示部16。因此,诸如通过弹出式窗口等在显示部16上显示在步骤570中获取的误差信息的所有内容的偏差通知方法等被选择作为偏差通知方法。此外,例如,如果结合有计算机10的装置是诸如复印机、打印机、传真机器、多功能装置、扫描仪、照片打印机、等的装置,可以一次显示在显示部16上的信息量受到限制,但是蜂鸣器等被设置。因此,通知方法被选择,在该方法中,通过使蜂鸣器发声,偏差已经发生的通知被给出,并且,在步骤570中获取的误差信息之中,仅偏差的类型被显示在显示部16上,等。然后,在步骤574中,偏差的发生的通知由在步骤572中确定的偏差通知方法给出,并且偏差发生中断处理结束。
以这种方式,在关于本示例性实施例的偏差发生中断处理中,对应于装置环境的偏差通知方法被从多个类型的偏差通知方法之中选择,并且偏差已经发生的通知由选择的偏差通知方法给出。因此,本发明可以通过将关于本发明的图像处理程序组34安装在各种结构的计算机10中被应用,并且通用性提高。此外,根据其中安装有图像处理程序组34的计算机10的结构(即,根据它是独立的计算机,还是内置于各种类型的装置中的任一种装置中的计算机,等),不必执行诸如在偏差出现等时切换处理的设置改变工作。因此,在安装时的工作负担也被减小。
注意,虽然,在此处,偏差处理在中断的前提下被解释,偏差处理并非必须是中断处理。例如,下列结构可以被使用:当偏差发生时,该模块将误差信息告知给偏差管理部46C,并且相对于此后的处理指令表达处理不能被执行的状态代码被返回。已经接收到该信息的处理管理部46将该信息返回给应用程序32。应用程序32从处理部46的偏差管理部46C接收误差信息,并且基于该误差信息,应用程序32本身执行诸如显示器或蜂鸣器等的处理。
注意,在上文的描述中,在前级的图像处理模块38使用的处理器与后级的图像处理模块38使用的处理器不同的情况下,连接在这些图像处理模块38之间的缓冲器模块40保留用于传递的缓冲器区域并且执行传递处理,并且促使后级的模块读出。然而,本发明不仅限于此。例如,后级的图像处理模块38可以执行该传递处理。在这种情况下,代替在图10A和图10B中所示的数据读出处理,缓冲器模块40的缓冲器控制部40B执行图24A和图24B中所示的数据读出处理。在此处,在图24A和图24B中的执行类似于图10A和图10B的那些的处理的步骤由与在图10A和图10B中相同的步骤编号指示。
在图24A和图24B中所示的数据读出处理中,步骤455、484、486的处理被省略,并且当判断在步骤452中为肯定的或当判断在步骤454中为肯定的时,步骤456的处理被立即执行。此外,在步骤462中,所通知的读出区域的地址没有变成用于传递的缓冲器区域的地址。而且,在步骤464之后,代替步骤467和步骤469的处理,步骤466和步骤468的处理被执行。在步骤466中,判断在读出处理中的读出区域是否为在先前步骤458中被保留的用于读出的缓冲器区域。如果判断为否定的,则例行程序移至步骤470,且无任何处理被执行。然而,如果判断在步骤466中为肯定的,则例行程序移至步骤468,在步骤468中,在先前步骤458中被保留作为用于读出的缓冲器区域的存储器区域的起始地址和大小被通知给资源管理部46B,并且向资源管理部46B请求释放该存储器区域。在图24A和图24B的数据读出处理中,除上文描述的那些步骤以外的步骤的处理类似于图10A和图10B中描述的读出处理,并且因此,其描述被省略。
此外,代替图13中所示的图像处理模块控制处理,图像处理模块38的控制部38B执行图25A和图25B中所示的图像处理模块控制处理。在此处,在图25A和图25B中的执行类似于图13的那些处理的步骤由与在图13中相同的步骤编号指示。
如图25A中所示,步骤289(1)至步骤289(3)的三个处理,以及步骤303的处理被添加到图13中所示的图像处理模块控制处理。
在步骤286中的判断变成肯定的之后,例行程序不立即出动步骤290,而是首先执行步骤289(1)的处理。在步骤289(1)中,在缓冲器模块40被连接在前级处的情况下,判断由为在前级的该缓冲器模块40的前级处的图像处理模块38在图像处理中使用的处理器是否与其自身的模块在图像处理中使用的处理器相同。如果判断在步骤289(1)中为肯定的,则在步骤289(2)中,资源管理部46B被请求以保留存储器。在此处,资源管理部46B被请求以在对应于其自身的模块在图像处理中使用的处理器的内存空间(例如,如果其自身的模块使用CPU12,则第一存储器14)中保留用于传递的缓冲器区域。如参照图2B等解释的,接收该请求的资源管理部46B保留用于传递的缓冲器区域并且将其起始地址移交至为请求的源的图像处理模块38。注意,在本示例性实施例中,用于传递的缓冲器区域具有大于或等于单位读出数据量的大小,并且未被保留在多个区域上。
在步骤289(3)中,数据获取和传递处理被执行。在此处,首先,图像数据被从由前级的缓冲器模块40通知的读出区域的地址顺次地读出并获取,并且该读出的图像数据被传递至(写入)上述被保留的用于传递的缓冲器区域。从缓冲器模块40通知的读出区域在对应于不同于其自身的模块使用的处理器的处理器的存储空间中。因此,传递处理由相互通信的其自身的处理器和对应于读出区域的存储器的处理器执行。然而,在构造为使得DMA传递是可能的情况下,DMA传递命令可以被输出,并且之后,传递处理可以被执行而无需通过处理器。图像处理模块38在被传递至该用于传递的缓冲器的图像数据上执行图像处理。
另一方面,如果判断在步骤289(1)中为否定的,则例行程序移至步骤290。在步骤290中,如图13中描述的,图像数据被从由前级的缓冲器模块40通知的读出区域的地址读出,并且图像数据被获取。在此处,在图像处理中使用了获取的图像数据。
在步骤289(3)之后,例行程序移至步骤292。步骤292及之后的步骤按通过使用上文描述的图13描述的操作。然而,在步骤289(3)被执行的情况下,在步骤302之后,步骤303的处理被执行,并且之后,例行程序进入步骤304。在步骤303中,资源管理部46B被请求以释放上述被保留的用于传递的缓冲器。在步骤289(3)不被执行的情况下,在步骤302之后,步骤303不被执行,并且例行程序进入步骤304。在图25A和图25B的图像处理模块控制处理中,除了上文描述的那些以外的步骤的处理类似于图13中描述的图像处理模块控制处理,并且因此,其描述被省略。
以这种方式,也在图像处理模块38判断处理器的相同/不同和执行传递处理的情况下,图像处理部可以有效率地执行图像处理,无多余的传递处理发生。
注意,上文给出了一示例的描述,在该示例中,虽然读出请求被从后级的图像处理模块38输入到缓冲器模块40,但是在如下情况下:可以由为读出请求的源的图像处理模块38读出的有效数据的数据量小于单位读出数据量,并且可以被读出的有效数据的结尾不是为处理的对象的图像数据的结尾,数据请求被从缓冲器模块40反复地输入到流程管理部46A,直至可以被读出的有效数据的数据量变得大于或等于单位读出数据量为止,或感测到可以被读出的有效数据的结尾是为处理的对象的图像数据的结尾为止。然而,本发明不仅限于此。在上文描述的情况下,当可以被读出的有效数据的数据量变得大于或等于单位读出数据量时,或当感测到可以被读出的有效数据的结尾是为处理的对象的图像数据的结尾时,缓冲器模块40可以仅一次将数据请求输入到流程管理部46A,并且可以将累计完成的通知输入到流程管理部46A,并且,在从数据请求已经被从缓冲器模块40输入之后直至累计完成通知被输入为止的时间段期间,流程管理部46A可以将处理请求反复地输入到该缓冲器模块40的前级的图像处理模块38。
此外,作为一示例,上文描述了如下方面:其中,在缓冲器模块40处,在读出请求被从后级的图像处理模块38输入并且可以由为读出请求的源的图像处理模块38读出的有效数据不被存储在其自身的模块的缓冲器40A中的情况下,缓冲器控制部40B将数据请求输入到流程管理部46A。然而,本发明并不限于该示例,并且在上文描述的情况下,缓冲器控制部40B可以将数据请求直接输入到前级的图像处理模块38。在该方面中,在图像处理的执行形式是块单位处理的情况下的处理顺序在图20中示出。此外,如从图20显然,在该方面中,它满足流程管理部46A将处理请求仅输入到在图像处理部50中的末级的图像处理模块38,并且因此,在流程管理部46A处的处理是简单的。
此外,作为块单元的图像处理的示例,上文描述了如下方面:其中,首先,流程管理部46A将处理请求输入到图像处理部50的末级的图像处理模块38,而且该处理请求作为数据请求或处理请求被顺次地传递至前级的模块。然而,本发明不仅限于此。将处理请求或数据请求从前级的模块顺次地传递到后级的模块并且执行块单位的图像处理也是可能的。例如,这可以被实现为如下。缓冲器模块40的缓冲器控制部40B被构造为使得,每次图像数据通过其自身的模块的前级的图像处理模块38被写入到缓冲器40A时,如果可以由后级的图像处理模块38读出的有效数据的数据量小于单位读出数据量并且可以被读出的有效数据的结尾不是为处理的对象的图像数据的结尾,则缓冲器控制部40B将数据请求输入到流程管理部46A,而,另一方面,当可以被读出的有效数据的数据量变得大于或等于单位读出数据量,或当感测到可以被读出的有效数据的结尾是为处理的对象的图像数据的结尾时,缓冲器控制部40B将积累完成的通知输入到流程管理部46A,而且,流程管理部46A被构造为使得,在将处理请求输入到图像处理部50的末级的图像处理模块38之后,每次数据请求被从任何缓冲器模块40输入时,流程管理部46A将处理请求输入到为数据请求的源的缓冲器模块40的前级的图像处理模块38,并且每次累积完成的通知被从任意缓冲器模块40输入时,流程管理部46A将处理请求输入到该缓冲器模块40的后级的图像处理模块38。此外,在上文中,可能的是,来自缓冲器模块40的数据请求作为处理请求被直接输入到该缓冲器模块40的前级的图像处理模块38,并且来自缓冲器模块40的累计完成的通知作为处理请求被直接输入到该缓冲器模块40的后级的图像处理模块38。
而且,上文描述了如下方面:其中,对于缓冲器模块40,单位写入数据量事先被从前级的图像处理模块38设置,并且单位读出数据量事先被从后级的图像处理模块设置。然而,本发明不仅限于此。每次将数据写入到缓冲器模块40或从缓冲器模块40读出数据,写入或读出的数据量可以被从图像处理模块38通知。
在上文的描述中,每次写入请求或读出请求被输入到缓冲器模块40时,输入请求作为请求信息被登记在队列中,并且请求信息被从队列逐一取出并且被处理。由此,排他控制被实现,其中,在输入写入请求时,如果从缓冲器40A读出数据正被执行,在数据读出完成之后,对应于该写入请求的数据写入处理被执行,并且,在输入读出请求时,如果将数据写入到缓冲器40A正被执行,在数据写入完成之后,对应于该读出请求的数据读出处理被执行。然而,本发明不仅限于此。例如,使用单位缓冲器区域作为单位的排他控制可以被执行。即,在输入写入请求时,如果数据的读出相对于在缓冲器40A内的该写入请求中写入的对象的单位缓冲器区域被执行,则在该数据读出完成之后,对应于该写入请求的数据写入处理可以被执行,并且此外,在输入读出请求时,如果数据的写入相对于在缓冲器40A内的该读出请求中读出的对象的单位缓冲器区域被执行,则在数据写入完成之后,对应于该读出请求的数据读出处理可以被执行。使用单位缓冲器区域作为单元的排他控制可以通过例如在各个单位缓冲器区域处提供队列并且执行排他控制等来实现。
此外,上文描述了一示例,在该示例中,在其程序被登记在模块库36中的各个图像处理模块38之中,对应于其单位读出数据量和单位写入数据量是相同的图像处理模块38的控制部38B的程序被共同使用。然而,本发明不仅限于此。例如,对应于控制部38B的程序可以被划分成:对应于第一控制部的程序,其从前级的模块获取图像数据并且将图像数据输入到图像处理引擎38A;对应于第二控制部的程序,其将从图像处理引擎38A输出的数据输出到前级数据的模块;以及对应于执行不依赖于单位读出数据量、单位处理数据量、或单位写入数据量的控制(例如,与流程管理部46A通信等)的共用控制部的程序。在所有图像处理模块处,对应于共用控制部的程序可以被共同使用。此外,对应于第一控制部的程序可以在其单位读出数据量是相同的图像处理模块38处被共同使用,并且对应于第二控制部的程序可以在其单位写入数据量是相同的图像处理模块38处被共同使用。
而且,因为构成图像处理部50的各个模块本身是程序,所以由图像处理部50进行的图像处理实际上由CPU12实现。在此处,可以使用下列系统(轮叫系统):对应于构成图像处理部50的各个图像处理模块38的程序作为为由CPU12执行的对象的过程、线程、或对象被登记在队列中。每次被登记在该队列中而且对应于特定图像处理模块的程序由CPU12从该队列取出时,判断单位处理数据量的图像数据是否可以从特定图像处理模块38的前级的模块获取。仅在判断单位处理数据量的图像数据可以被获取的情况下,单位处理数据量的图像数据被从该特定图像处理模块38的前级的模块获取。预定的图像处理(对应于特定图像处理模块38的图像处理引擎38A的处理)在获取的单位处理数据量的图像数据上执行。如下处理被执行:将已经经历预定的图像处理的图像数据或预定的图像处理的处理结果输出到其自身模块的后级的模块。之后,如果在为处理的对象的整个图像上的处理未完成,取出的对应于特定图像处理模块的程序作为为执行的对象的过程、线程或对象被再次登记该队列中。归因于CPU12重复这些单位图像处理,为处理的对象的整个图像由图像处理部50处理。
此外,构成图像处理部50的各个模块的程序可以作为对应于相应的多个模块的多个线程被执行。例如,在图像处理模块38中的四个以及设置在图像处理模块38之间的缓冲器模块40以管线形式被连接的结构中,可能存在如下结构:在该结构中,最前面的图像处理模块38和该图像处理模块38的后级处的缓冲器模块40作为线程A被执行,第二图像处理模块38和该图像处理模块38的后级处的缓冲器模块40作为线程B被执行,第三图像处理模块38和在该图像处理模块38的后级处的缓冲器模块40作为线程C被执行,并且第四图像处理模块38和在该图像处理模块38的后级处的缓冲器模块40作为线程D被执行(也参照图26)。
即,在此处,对应于图像处理模块38和后级的缓冲器模块40的组合的程序作为一个线程被操纵,该后级的缓冲器模块40为经受该图像处理模块38的图像处理的图像数据的输出的目的地。对应于该组合的图像处理模块38和缓冲器模块40分别使用的处理器是相同的。
此外,在该结构的情况下,当使得将被由构成线程的图像处理模块38和缓冲器模块40执行的处理成为任务时,这些任务被登记于其中的先入先出(FIFO)缓冲器(在下文中被称为队列)可以为图像数据的各个处理单位设置。相应的队列可以被设置在主处理器主要使用的主存储器处。由图像处理模块38和缓冲器模块40执行的处理被从线程作为在队列中的任务登记,并且以向队列中登记的顺序在对应的处理器处执行任务。
在此处,由图像处理模块38执行的图像处理被称为图像处理任务,并且由图像处理模块38或缓冲器模块40执行的传递处理被称为传递处理任务。注意,传递处理意指在图10A的步骤486中或在图25A的步骤289(3)中被执行的传递处理。可以为每个处理单位的每个图像数据设置队列,并且,通过以任务们被存储在队列中的顺序来执行这些任务,图像处理和传递处理可以被并行执行,并且传递时间的隐蔽可以被执行。
在下文中通过参照图26使用具体示例给出更加详细的描述。图26A示出当图像处理部由为主处理器的第一处理器以及为加速器或为诸如共同处理器等的另一处理器的第二处理器构造时相应的模块的连接状态的示例。在此处,被包括在图像处理部中的相应的图像处理模块38由附图标记M1、M2、M3、M4指示,并且在相应各个图像处理模块38的后级处的相应的缓冲器模块40由附图标记B1、B2、B3、B4指示。在下文中,图像处理模块在通过使用附图标记M1至M4代替附图标记38来区别的同时将被描述,并且缓冲器模块在通过使用附图标记B1至B4代替附图标记40来区别的同时将被描述。
图像处理模块M1和图像处理模块M4通过使用第一处理器执行图像处理。为在图像处理模块M1处处理的图像数据的输出目的地的缓冲器模块B1以及为在图像处理模块M4处处理的图像数据的输出目的地的缓冲器模块B4保留缓冲器,用于让前级的图像处理模块执行在对应于图像处理模块M1、M4使用的第一处理器的存储器(第一存储器)中图像数据的写入。
另一方面,图像处理模块M2和图像处理模块M3通过使用第二处理器执行图像处理。为在图像处理模块M2处处理的图像数据的输出目的地的缓冲器模块B2以及为在图像处理模块M3处处理的图像数据的输出目的地的缓冲器模块B3保留缓冲器,用于让前级的图像处理模块执行在对应于图像处理模块M2、M3使用的第二处理器的存储器(第二存储器)中图像数据的写入。
注意,如上文所描述的,图像处理模块M1和缓冲器模块B1的组合是线程A。图像处理模块M2和缓冲器模块B2的组合是线程B。图像处理模块M3和缓冲器模块B3的组合是线程C。图像处理模块M4和缓冲器模块B4的组合是线程D。
因为图像处理模块M1和图像处理模块M2使用的处理器彼此不同,所以需要图像数据的传递处理。此外,因为图像处理模块M2和图像处理模块M3使用的处理器是相同的,所以传递处理是不必要的。因为图像处理模块M3和图像处理模块M4使用的处理器彼此不同,所以需要图像数据的传递处理。
此外,虽然未示出,但每次为处理对象的图像数据被供应至图像处理部时,具有队列管理部的队列模块由模块产生部44产生。队列模块中的每一个使用为主处理器的第一处理器。当队列模块由模块产生部44产生和启动时,首先,从第一存储器中保留用作队列的存储器区域(例如,向资源管理部46B发送请求),并且队列模块等待来自相应的线程的任务的登记。相应的线程向队列模块发送登记请求以相互异步地在队列中登记图像处理任务和传递任务。由此,队列模块的队列管理部登记针对其请求了在该队列管理部管理的队列中的登记的任务。以这种方式,归因于从相应的线程到队列模块的登记请求以及接收登记请求的队列管理部的登记处理,在队列中的任务的登记被完成。在下文中,该一系列的处理由简单的措辞“将任务登记在队列中”来表达。
以这种方式,为图像数据的每个处理单位设置队列。处理单位不受特别限制。在此处,作为一示例,一个视频图像帧的图像数据是一个处理单位,并且为处理单位的每一个帧的三个图像数据被称为图像0、图像1和图像2,并且向其添加编号以区别它们。如图26B中所示,每个图像数据产生队列。图像数据被以图像0、图像1、图像2的顺序来处理。
在此处,描述的重点在从由图像处理模块M1完成图像处理之后直到图像处理模块M4接收由前级的图像处理模块M3图像处理后的图像数据为止的操作上。注意,如上文所描述的,在由在前级和后级处的模块所使用的处理器不同的情况下,执行在处理器之间的传递处理。在图26A中,在缓冲器模块B1与图像处理模块M2之间的图像数据的传递中所执行的传递处理任务由附图标记T0指示,并且在缓冲器模块B3与图像处理模块M4之间的图像数据的传递中所执行的传递处理任务由附图标记T1指示。此外,图像处理模块M2的图像处理任务由附图标记IP0指示,并且图像处理模块M3的图像处理任务由附图标记IP1指示。
首先,将用于图像0的图像数据的读出请求从图像处理模块M4发给前级的缓冲器模块B3。如果在图像处理模块M3处图像处理后的图像数据未被写入到缓冲器模块B3的缓冲器,则前级的图像处理模块M3被请求以写入图像数据。重复该操作,并且将对图像数据的请求顺次地发给前级的模块。利用该请求作为触发器,各个线程异步地将对应的任务登记在对应的图像数据的队列中。
例如,在线程A将图像处理模块M1的图像处理任务登记在图像0(未示出)的队列中之后,此次传递处理任务T0被登记在图像0的队列中。线程B等待关于前级的线程A的图像0的任务登记,并且将其自身的图像处理任务IP0登记在图像0的队列中。线程c等待关于前级的线程B的图像0的任务登记,并且将其自身的图像处理任务IP1并且之后将传递处理任务T1登记在图像0的队列中。
之后,当对于图像1的图像数据的请求出现时,以与在图像0的情况下相同的方式,各个线程将任务顺次地记录在图像1的队列中。因为队列被针对各个图像数据设置,所以各个线程相互异步地将图像1的任务登记在图像1的队列中,并且独立于图像0的任务。之后,也当图像2的图像数据的请求出现时,同样地,相应的线程将任务依次登记在图像2的队列中。
以这种方式,相应的线程将任务放置在队列中而无需等待前级的模块处理的完成(然而,各个线程等待由前级的线程进行的任务的登记)。对应于所布置的任务的处理器实际上执行传递处理或图像处理。登记在相应的图像0、图像1、图像2的队列中的任务由对应于各个任务的处理器以任务被登记的顺序读出。处理器执行读出任务。以这种方式,如果登记在队列中的所有任务被依次执行并且执行结束,则有关对应于那个队列的图像数据的图像处理结束。
以这种方式,被登记在一个队列中的任务(即,针对相同的图像数据的任务)以任务被登记的顺序被执行。然而,例如,图像0的图像处理任务以及图像1的图像数据的传递处理任务可以被并行地处理。
例如,控制DMA(直接存储器存取)的DMA控制器可以被设置在各个处理器处,并且如果图像数据的DMA传递命令被从处理器发送到DMA控制器,则在发送传递命令之后,在DMA传递其间,该处理器可以执行另一图像数据的图像处理任务。例如,在第一处理器从图像1的队列中取出图像1的传递处理任务T0并且发出传递命令之后,第一处理器可以从队列中取出图像0的图像处理任务并且执行图像处理任务。以这种方式,通过并行地执行传递处理和图像处理,可以执行传递时间的隐蔽。注意,在此处,通过使用DMA传递作为示例给出解释,但是本发明并不限于同样的解释。例如,在处理器具有多个核心的情况下,图像处理任务可以在一个核心处被执行,并且传递处理任务可以在不同的核心处被执行。也由此,传递处理和图像处理可以采用如上文所描述的同样的方式并行地被执行。
然而,在通过使用本结构出现的开销超过将被隐蔽的传递时间的情况下,并非必须利用本结构,所述开销诸如通过使用多个线程出现的开销、等待将任务登记到队列模块中并且完成任务的开销等。
在上文描述的示例性实施例中,给出如下示例的解释:在该示例中,应用程序32向模块产生部44指定在CPU12与GPU52之中的哪个处理器将被用于执行图像处理,并且相应的图像处理模块38被产生。然而,本发明不仅限于此。例如,模块产生部44可以自动地确定并且分配专门用于或适用于在图像处理模块38的图像处理引擎38A处执行的图像处理的处理器。此外,例如,相应的图像处理模块38的处理器可以被确定,使得在使用不同的处理器的模块在前后所连接的位置的数量小于阈值,以便减少上文描述的传递处理发生的次数。而且,通过组合上文描述的两个确定方法来确定图像处理模块38使用的处理器,可以产生图像处理模块38。
此外,虽然以上示例性实施例描述了通过使用两个处理器构造图像处理部以及期望的图像处理被执行的示例,但是图像处理部可以通过使用三个或以上处理器构造。再者,以上示例性实施例描述了安装有多个处理器的一台计算机10用作图像处理装置的示例,但是本发明并不限于此,并且例如下面的结构是可能的。构成相互独立的装置的多个计算机中的各个,产生通过使用安装在该计算机中的处理器执行图像处理的图像处理模块38。缓冲器模块40被设置在图像处理模块们38之中。然后,通过经由网络连接多个计算机,构成多个模块被连接的图像处理部,并且期望的图像处理被执行。即使在这种情况下,根据需要,如在以上示例性实施例中所描述的,可以执行用于传递的缓冲器的保留和图像数据的有效率传递。注意,在这种情况下,独立于处理器操作并且执行数据的传输和接收的通信处理部,可以被设置在各个计算机处,并且可以将传递命令从处理器发给通信处理部,并且之后,图像数据传递处理可以由通信处理部执行而无需通过处理器。
此外,虽然上文描述的第一存储器14和第二存储器54在物理上是不同的存储器,但本发明并不限于此。例如,第一存储器14和第二存储器54可以是虚拟上不同的存储器空间。
Claims (8)
1.一种图像处理装置,包括:
执行图像处理的多个图像处理模块;
至少一个缓冲器模块;以及
图像处理部,在所述图像处理部中,所述缓冲器模块被连接在所述图像处理模块的前级和后级中的至少一个处,其中
所述缓冲器模块
执行控制,所述控制促使前级的图像处理模块将图像数据写入到在对应于所述前级的图像处理模块在图像处理中使用的处理器的存储器空间中所保留的缓冲器中,并且,
在在图像处理中使用不同于由所述前级的图像处理模块在图像处理中使用的处理器的处理器的图像处理模块被连接在后级处的情况下,执行传递处理,所述传递处理将已经由所述前级的图像处理模块写入到所述缓冲器中的图像数据传递到用于传递的缓冲器中,所述用于传递的缓冲器被保留在对应于所述后级的图像处理模块在图像处理中使用的处理器的存储器空间中,并且执行处理,所述处理促使所述后级的图像处理模块读出被传递至所述用于传递的缓冲器的所述图像数据,并且,
在在图像处理中使用与由所述前级的图像处理模块在图像处理中使用的处理器相同的处理器的图像处理模块被连接在所述后级的情况下,执行处理且该处理使得所述后级的图像处理模块读出已经由所述前级的图像处理模块写入到所述缓冲器中的所述图像数据。
2.根据权利要求1所述的图像处理装置,其中
先入先出存储部被针对为所述图像处理部的处理对象的图像数据的各个处理单位设置,所述先入先出存储部将所述图像处理模块和所述缓冲器模块执行的处理登记作为任务,并且,
归因于传递处理的任务和所述图像处理的任务被登记在为各个图像数据设置的存储部中,对应于所述图像处理模块和在所述图像处理模块的后级处的缓冲器模块的组合并且相互异步地操作的多个线程中的各个线程,促使将要执行所述任务的处理器以所述任务被登记在所述存储部中的顺序来执行所述任务,并且,在所述传递处理正被执行的时间期间促使除了在由所述传递处理进行传递中途的图像数据以外的图像数据的图像处理被执行,并且所述图像处理的任务和所述传递处理的任务被并行执行。
3.根据权利要求1或权利要求2所述的图像处理装置,进一步包括:
模块产生部,所述模块产生部产生被包括在所述图像处理部中的所述图像处理模块和所述缓冲器模块,
其中,在当所述模块产生部产生所述图像处理模块时,所述模块产生部根据所述图像处理模块将要执行的图像处理的内容来确定将由所述图像处理模块在图像处理中使用的处理器,或确定所述图像处理模块的处理器,使得使用不同的处理器的模块在前后所连接的位置的数量小于阈值。
4.一种图像处理装置,包括:
执行图像处理的多个图像处理模块;
至少一个缓冲器模块;以及
图像处理部,在所述图像处理部中,所述缓冲器模块被连接到所述图像处理模块的前级和后级中的至少一个处,其中
所述缓冲器模块
执行控制,所述控制促使前级的图像处理模块将图像数据写入到在对应于所述前级的图像处理模块在图像处理中使用的处理器的存储器空间中保留的缓冲器中,并且执行处理,所述处理促使后级的图像处理模块读出已经被写入到所述缓冲器中的图像数据,并且
所述图像处理模块,
在在图像处理中使用不同于由其本身使用的处理器的处理器的图像处理模块被连接在前级的缓冲器模块的前级处的情况下,读出已经被写入到所述前级的缓冲器模块的缓冲器中的图像数据,并且执行传递处理,所述传递处理将所读出的图像数据传递到在对应于由其本身在图像处理中使用的处理器的存储器空间中保留的用于传递的缓冲器,并且之后,在被传递至所述用于传递的缓冲器的图像数据上执行图像处理,并且,
在在图像处理中使用与由其本身在图像处理中使用的处理器相同的处理器的图像处理模块被连接在所述前级的缓冲器模块的前级处的情况下,读出已经被写入到所述前级的缓冲器模块的缓冲器中的图像数据,并且执行图像处理。
5.根据权利要求4的图像处理装置,其中
先入先出存储部被针对为所述图像处理部的处理对象的图像数据的各个处理单位设置,所述先入先出存储部将所述图像处理模块和所述缓冲器模块执行的处理登记作为任务,并且,
归因于传递处理的任务和所述图像处理的任务被登记在为各个图像数据设置的存储部中,对应于所述图像处理模块和在所述图像处理模块的后级处的缓冲器模块的组合并且相互异步地操作的多个线程中的各个线程促使将要执行所述任务的处理器以所述任务被登记在所述存储部中的顺序来执行所述任务,并且,在所述传递处理正被执行的时间期间,促使除了由所述传递处理传递途中的图像数据以外的图像数据的图像处理被执行,并且所述图像处理的任务和所述传递处理的任务被并行地执行。
6.根据权利要求4或权利要求5所述的图像处理装置,进一步包括:
模块产生部,所述模块产生部产生被包括在所述图像处理部中的所述图像处理模块和所述缓冲器模块,
其中,在当所述模块产生部产生所述图像处理模块时,所述模块产生部根据所述图像处理模块将要执行的图像处理的内容来确定将由所述图像处理模块在图像处理中使用的处理器,或确定所述图像处理模块的处理器,使得使用不同的处理器的模块在前后所连接的位置的数量小于阈值。
7.一种由图像处理装置执行的图像处理方法,
所述图像处理装置包括:
执行图像处理的多个图像处理模块;
至少一个缓冲器模块;以及
图像处理部,在所述图像处理部中,所述缓冲器模块被连接到所述图像处理模块的前级和后级中的至少一个处,
所述图像处理方法包括:
所述缓冲器模块执行控制,所述控制促使前级的图像处理模块将图像数据写入到在对应于所述前级的图像处理模块在图像处理中使用的处理器的存储器空间中所保留的缓冲器;
在在图像处理中使用不同于由所述前级的图像处理模块在图像处理中使用的处理器的处理器的图像处理模块被连接在后级处的情况下,所述缓冲器模块执行传递处理,所述传递处理将已经由所述前级的图像处理模块写入到所述缓冲器中的图像数据传递到用于传递的缓冲器,所述用于传递的缓冲器保留在对应于所述后级的图像处理模块在图像处理中使用的处理器的存储器空间中,并且所述缓冲器模块执行处理,所述处理促使所述后级的图像处理模块读出被传递至所述用于传递的缓冲器的所述图像数据,并且,
在在图像处理中使用与由所述前级的图像处理模块在图像处理中使用的处理器相同的处理器的图像处理模块被连接在所述后级处的情况下,所述缓冲器模块执行处理,所述处理促使所述后级的图像处理模块读出已经由所述前级的图像处理模块写入到所述缓冲器中的所述图像数据。
8.一种由图像处理装置执行的图像处理方法,
所述图像处理装置包括:
执行图像处理的多个图像处理模块;
至少一个缓冲器模块;以及
图像处理部,在所述图像处理部中,所述缓冲器模块被连接到所述图像处理模块的前级和后级中的至少一个处,
所述图像处理方法包括:
所述缓冲器模块执行控制,所述控制促使前级的图像处理模块将图像数据写入到在对应于所述前级的图像处理模块在图像处理中使用的处理器的存储器空间中保留的缓冲器,并且所述缓冲器模块执行处理,所述处理促使后级的图像处理模块读出已经被写入到所述缓冲器中的图像数据;
所述图像处理模块,在在图像处理中使用不同于由其本身使用的处理器的处理器的图像处理模块被连接在前级的缓冲器模块的前级处的情况下,读出已经被写入到所述前级的缓冲器模块的缓冲器中的图像数据,并且执行传递处理,所述传递处理将所读出的图像数据传递到被保留在对应于由其本身在图像处理中使用的处理器的存储器空间中的用于传递的缓冲器,并且之后,在被传递至所述用于传递的缓冲器的所述图像数据上执行图像处理,并且,
所述图像处理模块,在在图像处理中使用与由其本身在图像处理中使用的处理器相同的处理器的图像处理模块被连接在所述前级的缓冲器模块的前级处的情况下,读出已经被写入到所述前级的缓冲器模块的缓冲器中的所述图像数据,并且执行图像处理。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012083052A JP5479519B2 (ja) | 2012-03-30 | 2012-03-30 | 画像処理装置、方法及びプログラム |
JP2012-083052 | 2012-03-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103366338A true CN103366338A (zh) | 2013-10-23 |
CN103366338B CN103366338B (zh) | 2015-04-01 |
Family
ID=49234327
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310061861.6A Active CN103366338B (zh) | 2012-03-30 | 2013-02-27 | 图像处理装置和图像处理方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9064324B2 (zh) |
JP (1) | JP5479519B2 (zh) |
CN (1) | CN103366338B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105282363A (zh) * | 2014-06-26 | 2016-01-27 | 京瓷办公信息系统株式会社 | 图像处理装置和传真装置 |
CN106155924A (zh) * | 2015-04-08 | 2016-11-23 | Tcl集团股份有限公司 | 图片合并方法、装置及智能设备 |
CN108121566A (zh) * | 2017-12-06 | 2018-06-05 | 中国航空工业集团公司西安航空计算技术研究所 | 一种图形指令解析设计方法 |
CN108229516A (zh) * | 2016-12-30 | 2018-06-29 | 北京市商汤科技开发有限公司 | 用于解译遥感图像的卷积神经网络训练方法、装置和设备 |
CN108389153A (zh) * | 2018-03-15 | 2018-08-10 | 广东欧珀移动通信有限公司 | 一种视图加载的方法及终端设备 |
JP2018164157A (ja) * | 2017-03-24 | 2018-10-18 | 富士ゼロックス株式会社 | 画像処理装置及びプログラム |
CN108780565A (zh) * | 2016-03-24 | 2018-11-09 | 富士胶片株式会社 | 图像处理装置、图像处理方法及图像处理程序 |
CN108885776A (zh) * | 2016-03-24 | 2018-11-23 | 富士胶片株式会社 | 图像处理装置、图像处理方法及图像处理程序 |
CN110278373A (zh) * | 2019-06-26 | 2019-09-24 | Oppo广东移动通信有限公司 | 图像处理器、图像处理方法、拍摄装置和电子设备 |
CN110741408A (zh) * | 2017-09-15 | 2020-01-31 | 富士施乐株式会社 | 图像处理装置、图像处理方法和图像处理程序 |
CN111052084A (zh) * | 2017-08-30 | 2020-04-21 | 富士胶片株式会社 | 图像处理装置、图像处理方法以及图像处理程序 |
CN112385206A (zh) * | 2018-07-11 | 2021-02-19 | 奥林巴斯株式会社 | 图像处理装置 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9697579B2 (en) * | 2013-06-07 | 2017-07-04 | Apple Inc. | Multi-processor graphics rendering |
JP6415028B2 (ja) | 2013-07-12 | 2018-10-31 | キヤノン株式会社 | 撮像装置、撮像装置の制御方法およびプログラム |
JP6936592B2 (ja) | 2017-03-03 | 2021-09-15 | キヤノン株式会社 | 演算処理装置およびその制御方法 |
US10521877B2 (en) | 2017-05-23 | 2019-12-31 | Samsung Electronics Co., Ltd | Apparatus and method for speculative buffer reservations with cancellation mechanism |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030001851A1 (en) * | 2001-06-28 | 2003-01-02 | Bushey Robert D. | System and method for combining graphics formats in a digital video pipeline |
US20050140787A1 (en) * | 2003-11-21 | 2005-06-30 | Michael Kaplinsky | High resolution network video camera with massively parallel implementation of image processing, compression and network server |
CN1873688A (zh) * | 2005-06-03 | 2006-12-06 | 富士施乐株式会社 | 图像处理设备、方法和存储有程序的存储介质 |
CN1873687A (zh) * | 2005-06-03 | 2006-12-06 | 富士施乐株式会社 | 图像处理装置、方法以及存储程序的存储介质 |
CN1873689A (zh) * | 2005-06-03 | 2006-12-06 | 富士施乐株式会社 | 图像处理设备、方法和存储有程序的存储介质 |
CN1873686A (zh) * | 2005-06-03 | 2006-12-06 | 富士施乐株式会社 | 图像处理装置、方法以及存储程序的存储介质 |
CN1873690A (zh) * | 2005-06-03 | 2006-12-06 | 富士施乐株式会社 | 图像处理设备、方法和存储有程序的存储介质 |
CN1873691A (zh) * | 2005-06-03 | 2006-12-06 | 富士施乐株式会社 | 图像处理装置、方法以及存储程序的存储介质 |
CN1873685A (zh) * | 2005-06-03 | 2006-12-06 | 富士施乐株式会社 | 图像处理设备、方法和存储有程序的存储介质 |
CN1873692A (zh) * | 2005-06-03 | 2006-12-06 | 富士施乐株式会社 | 图像处理装置、方法以及存储程序的存储介质 |
CN102298561A (zh) * | 2011-08-10 | 2011-12-28 | 北京百度网讯科技有限公司 | 一种对存储设备进行多通道数据处理的方法、系统和装置 |
EP2434401A1 (en) * | 2009-06-30 | 2012-03-28 | ZTE Corporation | Method and system for managing thread pool |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5289577A (en) * | 1992-06-04 | 1994-02-22 | International Business Machines Incorporated | Process-pipeline architecture for image/video processing |
JP3268591B2 (ja) * | 1995-11-22 | 2002-03-25 | 株式会社日立製作所 | グラフィックスプロセッサでの並列処理方法 |
US8271994B2 (en) * | 2006-02-11 | 2012-09-18 | International Business Machines Corporation | Reduced data transfer during processor context switching |
JP2008139968A (ja) | 2006-11-30 | 2008-06-19 | Fujifilm Corp | 画像処理装置及びプログラム |
US8533697B2 (en) * | 2007-02-14 | 2013-09-10 | The Mathworks, Inc. | Graphical processing unit (GPU) arrays providing high computational capabilities in a computing environment |
JP5046801B2 (ja) | 2007-08-28 | 2012-10-10 | 富士フイルム株式会社 | 画像処理装置及びプログラム |
-
2012
- 2012-03-30 JP JP2012083052A patent/JP5479519B2/ja active Active
-
2013
- 2013-02-26 US US13/777,862 patent/US9064324B2/en active Active
- 2013-02-27 CN CN201310061861.6A patent/CN103366338B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030001851A1 (en) * | 2001-06-28 | 2003-01-02 | Bushey Robert D. | System and method for combining graphics formats in a digital video pipeline |
US20050140787A1 (en) * | 2003-11-21 | 2005-06-30 | Michael Kaplinsky | High resolution network video camera with massively parallel implementation of image processing, compression and network server |
CN1873688A (zh) * | 2005-06-03 | 2006-12-06 | 富士施乐株式会社 | 图像处理设备、方法和存储有程序的存储介质 |
CN1873687A (zh) * | 2005-06-03 | 2006-12-06 | 富士施乐株式会社 | 图像处理装置、方法以及存储程序的存储介质 |
CN1873689A (zh) * | 2005-06-03 | 2006-12-06 | 富士施乐株式会社 | 图像处理设备、方法和存储有程序的存储介质 |
CN1873686A (zh) * | 2005-06-03 | 2006-12-06 | 富士施乐株式会社 | 图像处理装置、方法以及存储程序的存储介质 |
CN1873690A (zh) * | 2005-06-03 | 2006-12-06 | 富士施乐株式会社 | 图像处理设备、方法和存储有程序的存储介质 |
CN1873691A (zh) * | 2005-06-03 | 2006-12-06 | 富士施乐株式会社 | 图像处理装置、方法以及存储程序的存储介质 |
CN1873685A (zh) * | 2005-06-03 | 2006-12-06 | 富士施乐株式会社 | 图像处理设备、方法和存储有程序的存储介质 |
CN1873692A (zh) * | 2005-06-03 | 2006-12-06 | 富士施乐株式会社 | 图像处理装置、方法以及存储程序的存储介质 |
EP2434401A1 (en) * | 2009-06-30 | 2012-03-28 | ZTE Corporation | Method and system for managing thread pool |
CN102298561A (zh) * | 2011-08-10 | 2011-12-28 | 北京百度网讯科技有限公司 | 一种对存储设备进行多通道数据处理的方法、系统和装置 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105282363A (zh) * | 2014-06-26 | 2016-01-27 | 京瓷办公信息系统株式会社 | 图像处理装置和传真装置 |
CN106155924A (zh) * | 2015-04-08 | 2016-11-23 | Tcl集团股份有限公司 | 图片合并方法、装置及智能设备 |
CN108780565A (zh) * | 2016-03-24 | 2018-11-09 | 富士胶片株式会社 | 图像处理装置、图像处理方法及图像处理程序 |
CN108885776A (zh) * | 2016-03-24 | 2018-11-23 | 富士胶片株式会社 | 图像处理装置、图像处理方法及图像处理程序 |
CN108229516A (zh) * | 2016-12-30 | 2018-06-29 | 北京市商汤科技开发有限公司 | 用于解译遥感图像的卷积神经网络训练方法、装置和设备 |
JP2018164157A (ja) * | 2017-03-24 | 2018-10-18 | 富士ゼロックス株式会社 | 画像処理装置及びプログラム |
CN111052084B (zh) * | 2017-08-30 | 2023-10-17 | 富士胶片株式会社 | 图像处理装置、图像处理方法以及图像处理程序 |
CN111052084A (zh) * | 2017-08-30 | 2020-04-21 | 富士胶片株式会社 | 图像处理装置、图像处理方法以及图像处理程序 |
CN110741408B (zh) * | 2017-09-15 | 2023-08-01 | 富士胶片商业创新有限公司 | 图像处理装置、图像处理方法和图像处理程序 |
CN110741408A (zh) * | 2017-09-15 | 2020-01-31 | 富士施乐株式会社 | 图像处理装置、图像处理方法和图像处理程序 |
CN108121566A (zh) * | 2017-12-06 | 2018-06-05 | 中国航空工业集团公司西安航空计算技术研究所 | 一种图形指令解析设计方法 |
CN108389153B (zh) * | 2018-03-15 | 2022-03-15 | Oppo广东移动通信有限公司 | 一种视图加载的方法及终端设备 |
CN108389153A (zh) * | 2018-03-15 | 2018-08-10 | 广东欧珀移动通信有限公司 | 一种视图加载的方法及终端设备 |
CN112385206A (zh) * | 2018-07-11 | 2021-02-19 | 奥林巴斯株式会社 | 图像处理装置 |
CN112385206B (zh) * | 2018-07-11 | 2022-06-28 | 奥林巴斯株式会社 | 图像处理装置 |
CN110278373A (zh) * | 2019-06-26 | 2019-09-24 | Oppo广东移动通信有限公司 | 图像处理器、图像处理方法、拍摄装置和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
US20130257882A1 (en) | 2013-10-03 |
JP5479519B2 (ja) | 2014-04-23 |
US9064324B2 (en) | 2015-06-23 |
JP2013214151A (ja) | 2013-10-17 |
CN103366338B (zh) | 2015-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103366338B (zh) | 图像处理装置和图像处理方法 | |
CN1873685B (zh) | 图像处理设备和方法 | |
CN1873687B (zh) | 图像处理装置和方法 | |
JP5703729B2 (ja) | データ処理装置及びプログラム | |
JP5046801B2 (ja) | 画像処理装置及びプログラム | |
CN108463836B (zh) | 图像处理装置、图像处理方法和图像处理程序 | |
CN102473109A (zh) | 利用批调度的线程调度 | |
US20230274129A1 (en) | Method for execution of computational graph in neural network model and apparatus thereof | |
JP2008140046A (ja) | 画像処理装置、画像処理プログラム | |
CN109800092A (zh) | 一种共享数据的处理方法、装置及服务器 | |
CN1873691B (zh) | 图像处理装置、方法以及存储程序的存储介质 | |
KR20200136468A (ko) | 작업 스케줄링 | |
Cannella et al. | Adaptivity support for MPSoCs based on process migration in polyhedral process networks | |
JP2006338505A (ja) | 画像処理装置、方法及びプログラム | |
CN103262035A (zh) | 组合式cpu/gpu体系结构系统中的装置发现和拓扑报告 | |
CN108475213B (zh) | 图像处理装置、图像处理方法和图像处理程序 | |
CN102484130A (zh) | 存储器请求调度的应用程序选择 | |
CN110245024B (zh) | 静态存储块的动态分配系统及其方法 | |
JP4859103B2 (ja) | 画像形成装置 | |
WO2019044340A1 (ja) | 画像処理装置、画像処理方法、及び画像処理プログラム | |
JP2011257972A (ja) | 画像処理装置、プログラム及び画像処理方法 | |
CN101211254A (zh) | 用于生成可变数据图像的可变数据图像生成设备、可变数据图像形成系统及方法 | |
JP5920842B2 (ja) | シミュレーション装置、シミュレーション方法、およびプログラム | |
JP4964219B2 (ja) | 画像処理装置、方法及びプログラム | |
CN111937029A (zh) | 图像处理装置、图像处理方法、图像处理程序和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |