自动处理图像的方法以及使用该方法的装置的制作方法

文档序号:7627031阅读:107来源:国知局
专利名称:自动处理图像的方法以及使用该方法的装置的制作方法
技术领域
本发明涉及一种自动处理图像的方法以及一种使用该方法的装置。更具体地,本发明涉及一种显示位于最前端的软件窗口上的显示区域后部地图像的改变的自动处理图像方法,以及一种使用该方法的装置。
背景技术
图1为说明用来显示窗口的传统监视器屏幕的图示。参考诸如微软Windows操作系统之类的公知窗口图形用户界面(GUI)所理解的那样,使用术语“窗口”。参考图1,在监视器屏幕101上显示背景图像102、图标103、以及窗口显示104和105。由于每个应用显示不同的窗口,所以应用具有显示相应窗口的不同功能。例如,一些专业级别的应用能够在监视器上仿真并显示打印颜色。如微软Office应用的其它廉价应用不能仿真打印颜色,但是可以在接近图像的打印颜色的同时在监视器上预览屏幕布局。除仿真打印颜色之外,应用规范确定是否执行图像处理。
在传统的技术中,当应用不能仿真打印颜色时,必须通过使用在操作系统中执行的屏幕捕获功能、作为位图数据将显示目标窗口的图像数据复制到剪贴板中,使用能够处理位图数据的其它应用来手动执行图像处理。
然而,为了仿真打印颜色,传统技术需要具有改变和图像处理功能的昂贵应用,并且同样需要手动操作和时间。传统技术不能自动地仿真打印颜色,因此是不方便和不实用的。因此,需要一种以高速自动且方便地处理图像的方法。
通过引用合并于此的美国专利第6,151,135号公布了一种使用查询表来控制彩色信号的装置。
因此,存在对用于自动仿真打印颜色而不需要人工干预的经济型装置的需要。

发明内容
本发明提供了一种自动处理图像的方法,该方法自动和实时地在用户于整个监视器屏幕上所指定的预定区域上显示图像处理结果、并在监视器上仿真和显示打印颜色。
本发明还提供了一种自动处理图像的装置,该装置自动和实时地在用户于整个监视器屏幕中所指定的预定区域上显示图像处理结果、并在监视器上仿真和显示打印颜色。
根据本发明的一方面,提供了一种使用自动图像处理软件来自动处理图像的方法,该自动图像处理软件在其中在监视器屏幕上显示多个窗口的图形用户界面(GUI)操作系统中执行。该方法包括(a)捕获位于自动图像处理软件的窗口上的显示区域后部的图像;(b)对捕获的图像自动执行特定的图像处理;以及(c)在显示区域上显示处理过的图像。
根据本发明的又一个方面,提供了一种使用自动图像处理软件来自动处理图像的装置,该自动图像处理软件在其中在监视器屏幕上显示多个窗口的GUI操作系统中执行。该装置包括图像捕获单元,捕获在自动图像处理软件窗口上的显示区域后部的图像;图像处理单元,对捕获的图像自动执行特定的图像处理;以及显示单元,在显示区域上显示处理过的图像。


本发明的上面和其它特征和优点将通过结合附图来详细描述本发明的示范实施例而变得更加明显,其中
图1是说明显示窗口的传统监视器屏幕的图示;
图2是说明根据本发明的实施例的自动处理图像的方法的流程图3是说明根据本发明的实施例的用于自动处理图像的装置的框图4是说明根据本发明的实施例的自动图像处理软件的窗口的图示;
图5是说明根据本发明的实施例的自动图像处理软件的窗口的事件重调的框图6是说明根据本发明的实施例的自动图像处理软件的窗口的事件重调的流程图。
在这些图中,用相同的参考符号来表示相同的或相似的元件。
具体实施例方式
在下文中,现在将参考附图来更完全地描述本发明的示范实施例。
图2是说明根据本发明的实施例的自动处理图像的方法的流程图。参考图2,自动处理图像的方法使用在监视器屏幕上显示多个窗口的图形用户界面(GUI)操作系统中所执行的自动图像处理软件。
在步骤S10,捕获位于自动图像处理软件窗口上的显示区域后部的图像。在步骤S20,对捕获的图像自动执行特定的图像处理。在步骤S30,在显示区域上显示处理过的图像。
当由于鼠标操作而移动自动图像处理软件的窗口或者调整其尺寸时,指示了一个事件,并且在步骤S10捕获在显示区域后部的图像。在这里,将术语“事件”定义为在窗口中发生的每个事件,就是说,例如用鼠标点击图标、打开窗口、或者激活程序等。在步骤S10,当指示了事件时,在移动自动图像处理软件的窗口或者调整其尺寸的同时将显示区域设置为透明,并在移动了窗口或者调整了其尺寸之后,捕获在透明显示区域后部的图像。
在步骤S30,将显示区域设置为不透明,并且显示在对显示区域上不透明显示区域后部的图像执行特定图像处理之后所获得的图像。
特定的图像处理包括用于在监视器上显示打印颜色所必需的变色处理。为了执行该变色处理,在步骤S20,使用所捕获的图像的红、绿、蓝(RGB)值以便基于三维查询表计算三维线性内插。
图3是说明根据本发明的实施例的用于自动处理图像的装置的框图。参考图3,用于自动处理图像的装置1使用在监视器屏幕上显示多个窗口的GUI操作系统中执行的自动图像处理软件,并包括图像捕获单元10、图像处理单元20、以及显示单元30。
图像捕获单元10捕获在自动图像处理软件的窗口上的显示区域后部的图像。图像处理单元20对所捕获的图像自动执行特定的图像处理。显示单元30在显示区域上显示处理过的图像。
当由于鼠标操作而移动自动图像处理软件的窗口或者调整其尺寸时,图像捕获单元10捕获在显示区域的后部的图像。在移动自动图像处理软件的窗口或者调整其尺寸的同时,图像捕获单元10将显示区域设置为透明,并在移动了窗口或者调整了其尺寸之后捕获在透明显示区域后部的图像。
显示单元30将显示区域设置为不透明,并显示在对显示区域上不透明显示区域后部的图像执行特定图像处理之后所获得的图像。
特定的图像处理包括用于在监视器上显示打印颜色所必需的变色处理。为了执行该变色处理,图像处理单元20输入所捕获的图像的RGB值,并使用三维查询表来计算三维线性内插。
图4是说明根据本发明的实施例的自动图像处理软件窗口的图示。参考图4,在整个屏幕201上显示背景图像202、图标203、自动图像处理软件的窗口显示单元204、以及其它应用的窗口显示单元205。图5是说明根据本发明的实施例的自动图像处理软件的窗口的事件重调的框图。图6是说明根据本发明的实施例的自动图像处理软件的窗口的事件重调的流程图。参考图4至图6,现在将描述根据本发明的实施例的自动处理图像的方法。这里,术语“事件重调”指的是再次显示窗口,就是说,例如使窗口最大化、使窗口最小化、或者将不活动的窗口转换为活动的窗口等。
现在将描述一种检查通过对在应用的窗口屏幕上的图像自动执行特定图像处理而获得的结果、而在任何时间都不用单独操作的方法。
参考图5,备用状态301对应于在事件驱动操作系统中的消息循环操作。当从事件驱动操作系统向自动图像处理消息通知事件重调302时,自动图像处理软件开始自动图像处理。在自动图像处理软件窗口的当前显示区域后部的屏幕显示图像没有被分成背景图像202、图标203、以及窗口显示单元205,而是作为一个图像被捕获(303)。执行特定的图像处理(304)。当执行打印颜色仿真时,对每一个像素计算新RGB值。更具体地,考虑到执行打印颜色仿真所需要的速度,使用基于三维查询表的三维线性内插来计算新的RGB值。改变表305对应于三维查询表。可以基于先前计算的变色来编写三维查询表。广泛地使用国际颜色协会(ICCintemational color consortium)简档表用于计算变色。
在自动图像处理软件的窗口上显示基于已计算的RGB值的图像(306)。在备用状态301完成该图像自动处理。
事件用于根据组成操作系统的事件规范、来确定用于执行图像自动处理的定时。
在一个例子中,在由于诸如“点击-和-拖拉”操作之类的鼠标操作等而移动自动图像处理软件的窗口或者调整其尺寸时,微软Windows 2000或者Windows XP使窗口的显示区域,即客户区域完全透明。该方法在通过例如松开鼠标按钮而确定要移动窗口或者调整窗口尺寸的时刻,捕获位于透明窗口后部的屏幕图像,执行图像处理、使客户区域不透明、并显示处理过的图像结果。
现在将作为例子来描述在Windows 2000和Windows XP操作系统中使用微软基础类(MFCMicrosoft Foudation Class)C++的嵌入式软件。参考图6,在步骤S402将窗口客户区域处理为透明,在步骤S404捕获整个屏幕。在步骤S406将客户区域坐标改变为整个屏幕区域坐标,并在步骤S408将改变的区域坐标存储到存储器中。在步骤S410处理在存储器中存储的图像数据,并在步骤S412将客户区域处理为不透明。在步骤S414在客户区域上输出处理过的图像数据。
现在将描述以Visual C++7.0编写的示范程序。该程序包含图6的步骤,且其内部代码使用MFC和应用程序接口(API)。
首先,将程序配置为MFC的多文档界面(MDI)。
通过改变MainFrame类的PreCreatWindow(CREATSTRUCT&cs)的CREATESTRUCT结构中的值cx和cy来减少在操作该程序中所确定的窗口尺寸。
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT&cs)
{
if(!CFrameWnd::PreCreateWindow(cs))
return FALSE;
cs.cx=300;
cs.cy=300;
return TRUE;
}
两个区域对象用于使客户区域,即窗口显示区域透明。在两个区域对象中建立整个屏幕和客户区域。通过执行异或(exclusive OR)操作获得透明的客户区域。当产生窗口、移动窗口、或者调整窗口尺寸时,产生透明区域,由于透明客户区域的产生与窗口框架相关,所以其在MainFrame类中执行。
  Rgn g_rgnWnd,g_rgn Wnd2;……………void CMainFrame::OnSize(UINT nType,int cx,int cy)void CMainFrame::OnMove(int x,int y)void CMainFrame::OnCaptureChanged(CWnd*pWnd){  ……………  GetClientRect(&rcClient);  GetWindowRect(&rcScreen);  ClientToScreen(&rcClient);  if((HRGN)g_rgnWnd!=NULL)   g_rgn Wnd.DeleteObject();  if((HRGN)g_rgnWnd2!=NULL)   g_rgn Wnd2.DeleteObject();  g_rgnWnd2.CreateRectRgn(rcClient.left-rcScreen.left,  rcClient.top-rcScreen.top,  rcClient.right-rcScreen.left,rcClient.bottom-rcScreen.top);(1)  g_rgnWnd.CreateRectRgn(0,0,rcScreen.Width(),rcScreen.Height());(2)  g_rgn Wnd.CombineRgn(&g_rgn Wnd2,&g_rgn Wnd,RGN_XOR);(3)  SetWindowRgn((HRGN)g_rgn Wnd,true);(4)}
在该程序中,(1)指示客户区域,(2)指示整个屏幕区域,(3)指示客户区域和整个屏幕区域的异或操作,以及(4)指示客户区域和整个屏幕区域的异或OR操作的生效。
将区域尺寸限制成仅仅为除标题栏、菜单栏、以及边界栏之外的客户区域。
当松开鼠标按钮时,捕获对应位置的客户区域,以便使透明区域不透明。
void CMainFrame::OnCaptureChanged(CWnd*pWnd)
{
CFrameWnd::OnCaptureChanged(p Wnd);
CNewCapture6View*pView;
pView=(CPrevieScopeView*)GetActiveView();
pView->OnCaptureBegin();(5)
OnUndoTransparent();(6)
}
在该程序中,(5)指示开始捕获图像,以及(6)指示将透明区域回复为不透明。
在视图类(view class)中捕获图像。创建BITMAPINFOHEADER,以便获得所捕获的图像的位图,并使用CreateDIBSection函数创建该位图。将创建的位图存储到存储器中,并在使客户区域不透明之后使用该位图来显示图像处理后的屏幕。该视图类用于在该屏幕上显示所捕获的图像。
Void CPrevieScopeView::OnCaptureBegin(){  UINTi,j;GetClientRect(&amp;rcScreen);//当前窗口客户区域的尺寸  rcClient=rcScreen;  ClientToScreen(&amp;rcScreen)  WORD width,height;  Width=rcClient.Width();  Height=rcClient.Height();  memset(&amp;bmi,0,sizeof(BITMAPINFO));  //设置BITMAPINFOHEADER,必需基于整个屏幕信息和客户区域信息  //设置这个信息  bmi.bmiHeader.biSize=sizeof(BITMAPINFOHEADER);  bmi.bmiHeader.biWidth=width;  bmi.bmiHeader.biHeight=height;  bmi.bmiHeader.biPlanes=1;  bmi.bmiHeader.biBitCount=24;  bmi.bmiHeader.biCompression=BI_RGB;  //使用BITMAPINFORHEADER创建位图<!-- SIPO <DP n="7"> --><dp n="d7"/>  hMyBitmap=CreateDIBSection(hMemDC,&amp;bmi,DIB_PAL_COLORS,&amp;pBuf,NULL,0);  hOldBitmap=(HBITMAP)SelectObject(hMemDC,hMyBitmap);  BitBlt(hMemDC,0,0,width,height,hDesktopDC,rcScreen.left,rcScreen.top,SRCCOPY);  GetObject(hMyBitmap,sizeof(BITMAP),&amp;bmp);  DWORD offset;  BYTE*buf=(BYTE*)(pBut);  for(j=0;j<height;j++)   for(i=0;i<width;i++)   {   offset=j*bmp.bm WidthBytes+i*3;   //处理所捕获的图像   buf[offset]=(BYTE)(buf[offset]*06);   buf[offset+1]=(BYTE)(buf[offset+1]*0.9);   buf[offset+2]=(BYTE)(buf[offset+2]*0.8);  }}
将图像处理过的数据存储到存储器中。为了显示图像处理过的数据,应该将透明区域改变为不透明区域。
Void CMainFrame::OnUndoTransparent(){GetClientRect(&amp;rcClient);   GetWindowRect(&amp;rcScreen);   ClientToScreen(&amp;rcClient);   //当先前的数据仍然存在时,删除这些先前的数据。   if((HRGN)g_rgn Wnd!=NULL)   g_rgn Wnd.DeleteObject();   if((HRGN)g_rgn Wnd2!=NULL)   g_rgnWnd2.DeleteObject();   g_rgn Wnd2.CreateRectRgn(rcClient.left-rcScreen.left,   rcClient.top-rcScreen.top,<!-- SIPO <DP n="8"> --><dp n="d8"/>  rcClient.right-rcScreen.left,rcClient.bottom-rcScreen.top);  g_rgn Wnd.CreateRectRgn(0,0,rcScreen.Width(),rcScreen.Height());  g_rgn Wnd.CombineRgn(&amp;g_rgn Wnd2,&amp;g_rgn Wnd,RGN_OR);  SetWindowRgn((HRGN)g_rgn Wnd,true);}
如上所述,将整个屏幕和客户区域设置为区域对象,并执行OR操作。将透明区域改变为不透明区域。在客户区域上显示在存储器中存储的数据。
Void CPreviewScopeView::OnPaint()
{
CPaintDC dc(this);//用于绘制的设备上下文
BitBlt(dc,0,0,bmp.bm Width,bmp.bmHeight,hMemDC,0,0,SRCCOPY);
SelectObject(hMemDC,hOldBitmap);
}
BitBlt函数用于将在存储器中存储的数据复制到客户区域。
当再次移动窗口或者调整窗口的尺寸时重复上面的处理。捕获在客户区域中的图像,并在客户区域中显示图像处理过的背景屏幕。这里描述的本发明的示范实施例基于事件驱动的操作系统,但不局限于此。
本发明的示范实施例使得有可能迅速且自动地显示在用户指定的预定窗口区域上、正在监视器上执行的预定软件的窗口上的图像的改变。
具体地,本发明的示范实施例使得有可能,当图像处理包含色变处理时,方便地检查变色仿真的结果并提高用户方便性。
即使当所使用的应用不能打印彩色仿真时,本发明的实施例也使得有可能不执行单独操作而仿真打印颜色。
尽管已经详细示出和描述了本发明的实施例,但是本领域的一般技术人员应理解,其中可以作出形式上和细节上的各种变化而不脱离由权利要求所限定的本发明的精神和范围。
权利要求
1.一种使用自动图像处理软件来自动处理图像的方法,该自动图像处理软件在其中在监视器屏幕上显示多个窗口的图形用户界面(GUI)操作系统中执行,所述方法包括
(a)捕获位于自动图像处理软件窗口上的显示区域后部的图像;
(b)对捕获的图像自动执行特定的图像处理;以及
(c)在显示区域上显示已处理的图像。
2.根据权利要求1的方法,其中操作(a)包括
当由于鼠标操作而移动该自动图像处理软件的窗口或者调整其尺寸时,产生事件通知并捕获在该显示区域后部的图像。
3.根据权利要求2的方法,其中操作(a)还包括
当产生事件通知时,在移动自动图像处理软件窗口或者调整其尺寸的同时将显示区域设置为透明,并在移动了窗口或者调整了其尺寸之后,捕获在透明显示区域后部的图像。
4.根据权利要求3的方法,其中操作(c)包括
将显示区域设置为不透明,并显示在对该显示区域上不透明显示区域后部的图像执行特定图像处理之后所获得的图像。
5.根据权利要求1的方法,其中操作(b)中,特定图像处理包括用于在监视器上显示打印颜色所需的变色处理。
6.根据权利要求5的方法,其中操作(b)还包括
为了执行该变色处理,输入所捕获的图像的红、绿、蓝(RGB)值,并基于三维查询表计算三维线性内插。
7.一种使用自动图像处理软件来自动处理图像的装置,该自动图像处理软件在其中在监视器屏幕上显示多个窗口的图形用户界面(GUI)操作系统中执行,所述装置包括
图像捕获单元,用于捕获在该自动图像处理软件的窗口上的显示区域后部的图像;
图像处理单元,用于对所捕获的图像自动执行特定的图像处理;以及
显示单元,用于在显示区域上显示处理过的图像。
8.根据权利要求7的装置,其中当由于鼠标操作而移动自动图像处理软件的窗口或者调整其尺寸时,图像捕获单元捕获在显示区域后部的图像。
9.根据权利要求8的装置,其中图像捕获单元在移动自动图像处理软件窗口或者调整其尺寸的同时将显示区域设置为透明,并在移动了窗口或者调整了其尺寸之后捕获在透明显示区域后部的图像。
10.根据权利要求9的装置,其中显示单元将显示区域设置为不透明,并显示在对该显示区域上不透明显示区域后部的图像执行特定图像处理之后所获得的图像。
11.根据权利要求7的装置,其中特定的图像处理包括用于在监视器上显示打印颜色所必需的变色处理。
12.根据权利要求11的装置,其中图像处理单元输入所捕获的图像的RGB值,并基于三维查询表来计算三维线性内插,以便执行变色处理。
13.一种包含用于使用自动图像处理软件来自动处理图像的指令的计算机可读介质,该自动图像处理软件在其中在监视器屏幕上显示多个窗口的图形用户界面(GUI)操作系统中执行,该方法包括
第一组指令,适配为捕获位于自动图像处理软件窗口上的显示区域后部的图像;
第二组指令,适配为对所捕获的图像自动地执行特定图像处理;以及
第三组指令,适配为在显示区域上显示已处理的图像。
14.根据权利要求13的包含指令的计算机可读介质,其中所述第一组指令还适配为,当由于鼠标操作而移动自动图像处理软件的窗口或者调整其尺寸时,产生事件通知并捕获在显示区域后部的图像。
15.根据权利要求14的包含指令的计算机可读介质,其中所述第一组指令还适配为,在移动自动图像处理软件窗口或者调整其尺寸的同时将显示区域设置为透明,并在移动窗口或者调整其尺寸之后,在产生事件通知时捕获在透明显示区域后部的图像。
16.根据权利要求15的包含指令的计算机可读介质,其中所述第三组指令还适配为,将显示区域设置为不透明,并显示在对该显示区域上不透明显示区域后部的图像执行特定图像处理之后所获得的图像。
17.根据权利要求13的包含指令的计算机可读介质,其中在所述第二组指令中,特定的图像处理包括用于在监视器上显示打印颜色所需的变色处理。
18.根据权利要求17的包含指令的计算机可读介质,其中所述第二组指令还适配为输入所捕获的图像的红、绿、蓝(RGB)值,并基于三维查询表来计算三维线性内插,以便执行变色处理。
全文摘要
提供了用于自动处理图像的装置和方法,其显示在最上面的软件窗口上的显示区域后部的图像的改变。该自动处理图像的方法使用在监视器屏幕上显示多个窗口的图形用户界面(GUI)操作系统中执行的自动图像处理软件。该装置和方法包括捕获在自动图像处理软件窗口上的显示区域后部的图像;对所捕获的图像自动地执行特定的图像处理;以及在显示区域上显示处理过的图像。
文档编号H04N1/60GK1786891SQ20051011841
公开日2006年6月14日 申请日期2005年10月28日 优先权日2004年12月9日
发明者长谷川润, 黄泰允 申请人:三星电子株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1