电视机图像的任意位置区域放大方法

文档序号:7615211阅读:893来源:国知局
专利名称:电视机图像的任意位置区域放大方法
技术领域
本发明属于电视机技术领域,更明确地说涉及电视机图像的任意位置区域放大方法的设计。
背景技术
传统的电视机不能够进行图像区域放大或者只能进行固定位置区域图像的放大,这就给用户带来诸多不便。有些时候用户可能需要对画面的任意区域进行放大以便能够观察局部细节,还有些时候用户需要对画面反复进行搜索以确定需要放大的局部并加以放大。以往地电视机则不能满足这种需求,不能对图像的任意位置区域进行放大。

发明内容
本发明的目的,就在于克服上述缺点和不足,提供一种电视机图像的任意位置区域放大方法。它有一个可以上下左右移动的区域选择框供用户操作,当用户将该区域选择框移动到想要放大的位置并确认后,就可以将此区域的图像放大到满屏。
为了达到上述目的,本发明包括以下步骤
(1)在交互界面软件状态中,设置局部放大状态;
(2)通过OSD控制软件在电视机画面中画出区域选择框;
(3)通过软件使用户依据输入的操作码的不同,随意操作移动选择框的位置;
(4)通过软件使用户确认该位置后,可将此区域作为图像输出的输入并完成图像的放大输出或者恢复到正常画面。
上述步骤(4)在放大时,根据插值算法,将选定的区域图像扩展到全屏;退出时则不再插值,而是将完整的图像数据写入显示寄存器。
本发明在交互界面软件状态机中,设置局部放大状态。进入此状态后,依据默认位置,画出区域选择框,并开始等待用户操作。依据输入的操作码的不同,区域选择框会移动到指定的位置,或者连续移动到任意位置,或者将选定的区域放大到全屏,或者退出放大恢复到正常画面。放大时,根据插值算法,将选定的区域图像扩展到全屏。退出时,不再插值,而是将完整的图像数据写入显示寄存器。
本发明的任务就是这样完成的。
本发明有一个可以上下左右移动的区域选择框供用户操作,当用户将该区域选择框移动到想要放大的位置并确认后,就可以将此区域的图像放大到满屏。它可以满足用户对画面的任意区域进行放大、以便能够观察局部细节的需要,可广泛应用于各种电视机中。


图1为本发明的流程方框示意图。
具体实施例方式
实施例1。一种电视机图像的任意位置区域放大方法。它包括以下步骤
(1)在交互界面软件状态中,设置局部放大状态;
(2)通过OSD控制软件在电视机画面中画出区域选择框;
(3)通过软件使用户依据输入的操作码的不同,随意操作移动选择框的位置;
(4)通过软件使用户确认该位置后,可将此区域作为图像输出的输入并完成图像的放大输出或者恢复到正常画面。
上述步骤(4)在放大时,根据插值算法,将选定的区域图像扩展到全屏;退出时则不再插值,而是将完整的图像数据写入显示寄存器。
完成这些操作的源代码如下
//进入局部放大功能后,画出区域选择框的函数
void appUIPartZoomInEnter(void){//打开绘画列表//PCDRAWABLE pasDrawList=g_asLayers[ldPARTZOOMIN].pasDrawList;//Open OSD sized to top menu layer define by OSDLayout//分配空间m_cPaneID=appUIUtilOSDInit(ldPARTZOOMIN,//Layer to set size of OSD1,//single width<!-- SIPO <DP n="2"> --><dp n="d2"/>1,//single heightosdposCUSTOM,//center pane&amp;m_sSelBoxPos);//position(ignored)//Draw selected rect box bitmap//画出选择框halOSDCtrlBitmapDraw(m_cPaneID,utilRectPosition(&amp;g_asLayers[1dPARTZOOMIN].pasDrawList
.sRect),&amp;g_asBitmaps[g_asLayers[ldPARTZOOMIN].pasDrawList
.wIndex],0);//显示选择框//Turn on OSDhalOSDCtrlPaneEnable(m_cPaneID,TRUE);//设置选择框的透明度//Set the transparent of the selected boxi_aPPUIMiscOverlaySet(0,80);}//局部放大功能事件响应函数void appUIPartZoomInEvent(KEY_EVENT sKeyEvent){BYTE cPosIndex;if(((sKeyEvent.eKey>=keCH_UP&amp;&amp;sKeyEvent.eKey<=keVOL_DOWN)‖(sKeyEvent.eKey>=ke0&amp;&amp;sKeyEvent.eKey<=ke9))&amp;&amp;!m_bZoomState){//根据不同的键设置不同的位置或者改变位置switch(sKeyEvent.eKey){<!-- SIPO <DP n="3"> --><dp n="d3"/>case ke0cPosIndex=113;break;case ke1cPosIndex=1;break;case ke2cPosIndex=8;break;case ke3cPosIndex=15;break;case ke4cPosIndex=106;break;case ke5cPosIndex=113;break;case ke6cPosIndex=120;break;case ke7cPosIndex=211;break;case ke8cPosIndex=218;break;case ke9cPosIndex=225;break;<!-- SIPO <DP n="4"> --><dp n="d4"/>case keVOL_UP//cPosIndex=(m_cPosIndex==9)?1m_cPosIndex+1;cPosIndex=(m_cPosIndex==225)?1m_cPosIndex+1;break;case keVOL_DOWN//cPosIndex=(m_cPosIndex==0)?9m_cPosIndex-1;cPosIndex=(m_cPosIndex==1)?225m_cPosIndex-1;break;case keCH_DOWN{if(m_cPosIndex>210){if(225==m_cPosIndex){cPosIndex=1;}else{cPosIndex=15-(225-m_cPosIndex)+1;}}else{cPosIndex=m_cPosIndex+15;}}break;case keCH_UP<!-- SIPO <DP n="5"> --><dp n="d5"/>{if(m_cPosIndex<16){if(1==m_cPosIndex){cPosIndex=225;}else{cPosIndex=210+(m_cPosIndex-1);}}else{cPosIndex=m_cPosIndex-15;}}break;defaultbreak;}if(m_cPosIndex!=cPosIndex){m_cPosIndex=cPosIndex;m_sSelBoxPos.wX=((m_cPosIndex-1)%15)*(m_sScreenSize.wHResm_sOSDSize.wX)/14;m_sSelBoxPos.wY=((m_cPosIndex-1)/15)*(m_sScreenSize.wVResm_sOSDSize.wY)/14;<!-- SIPO <DP n="6"> --><dp n="d6"/>halOSDCtrlPositionSet(m_cPaneID,m_sSelBoxPos);}}//局部放大或者还原//Zoom in or close zoom inif(keSELECT==sKeyEvent.eKey‖keKPD_SELECT==sKeyEvent.eKey){if(!m_bZoomState)//局部放大//Zoom in{eSCALE MODE eScaleMode;//set delta for paramsif(loSINGLE_MAIN==appWindowMgrLayoutGet()){eScaleMode=appWindowMgrScaleModeGet(0);m_cZoomPart=m_cPosIndex;appWindowMgrScaleModeSetStart(0,eScaleMode);}//隐藏选择框//Erase selected rect boxhalOSDCtrlRectangleDraw(m_cPaneID,&amp;g_asLayers[ldPARTZOOMIN].pasDrawList
.sRect,0);}else //还原//Close zoom in{eSCALE_MODE eScaleMode;//set delta for paramsif(loSINGLE_MAIN==appWindowMgrLayoutGet())<!-- SIPO <DP n="7"> --><dp n="d7"/>{eScaleMode=app WindowMgrScaleModeGet(0);m_cZoomPart=0;appWindowMgrScaleModeSetStart(0,eScaleMode);}//重画选择框//Redraw selected rect boxhalOSDCtrlB itmapDraw(m_cPaneID,utilRectPosition(&amp;g_asLayers[1dPARTZOOMIN].pasDrawList
.sRect),&amp;g_asBitmaps[g_asLayers[ldPARTZOOMIN].pasDrawList
.wIndex],0);}m_bZoomState=!m_bZoomState;}}//退出局部放大功能void appUIPartZoomInExit(void){PUI_NVRAM_TYPE psNVRAMData;BYTE m_OSDTranslucency;//释放为画选择框分配的空间//turn off OSDhalOSDCtrlPaneEnable(m_cPaneID,FALSE);halOSDCtrlPaneDeallocate(m_cPaneID);//退出局部放大状态<!-- SIPO <DP n="8"> --><dp n="d8"/>//close zoom inif(m_bZoomState){//2005-03-10ZOOMeSCALE MODE eScaleMode;//set delta for paramsif(loSINGLE_MAIN==appWindowMgrLayoutGet()){eScaleMode=appWindowMgrScaleModeGet(0);m_cZoomPart=0;appWindowMgrScaleModeSetStart(0,eScaleMode);}//2005-03-09ZOOM ENDm_bZoomState=FALSE;}//恢复OSD的透明度//Restore the transparent of the selected box//从NV RAM中取出存储的透明度值psNVRAMData=utilDataMgrReadLockData(nnUI_NVRAM_DATA);//apply values from NVRAM settingm_OSDTranslucency=psNVRAMData->cOSDTranslucency;utilDataMgrUnlock(nnUI_NVRAM_DATA,FALSE);i_appUIMiscOverlaySet(0,m_OSDTranslucency);}
实施例1有一个可以上下左右移动的区域选择框供用户操作,当用户将该区域选择框移动到想要放大的位置并确认后,就可以将此区域的图像放大到满屏。它可以满足用户对画面的任意区域进行放大、以便能够观察局部细节的需要,可广泛应用于各种电视机中。
权利要求
1.一种电视机图像的任意位置区域放大方法,其特征在于它包括以下步骤
(1)在交互界面软件状态中,设置局部放大状态;
(2)通过OSD控制软件在电视机画面中画出区域选择框;
(3)通过软件使用户依据输入的操作码的不同,随意操作移动选择框的位置;
(4)通过软件使用户确认该位置后,可将此区域作为图像输出的输入并完成图像的放大输出或者恢复到正常画面。
2.按照权利要求1所述的电视机图像的任意位置区域放大方法,其特征在于上述步骤(4)在放大时,根据插值算法,将选定的区域图像扩展到全屏;退出时则不再插值,而是将完整的图像数据写入显示寄存器。
全文摘要
一种电视机图像的任意位置区域放大方法。它包括以下步骤(1)在交互界面软件状态中,设置局部放大状态;(2)通过OSD控制软件在电视机画面中画出区域选择框;(3)通过软件使用户依据输入的操作码的不同,随意操作移动选择框的位置;(4)通过软件使用户确认该位置后,可将此区域作为图像输出的输入并完成图像的放大输出或者恢复到正常画面。步骤(4)在放大时,根据插值算法,将选定的区域图像扩展到全屏;退出时则不再插值,而是将完整的图像数据写入显示寄存器。它可以满足用户对画面的任意区域进行放大、以便能够观察局部细节的需要,可广泛应用于各种电视机中。
文档编号H04N5/445GK1710944SQ20051004390
公开日2005年12月21日 申请日期2005年6月25日 优先权日2005年6月25日
发明者陈阳, 李宾 申请人:海信集团有限公司, 青岛海信电器股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1