白板和文档图像检测方法和系统与流程

文档序号:11161056阅读:617来源:国知局
白板和文档图像检测方法和系统与制造工艺

移动计算设备(诸如智能电话和平板)正越来越多地被用来代替独立的相机,用于捕捉与工作场所中的各种生产力场景(例如,包括幻灯片演示、头脑风暴会话等的会议)相关联的白板、黑板(例如具有彩色背景的书写表面)以及文档的照片。捕获的摄影图像随后可被用在用于生成电子文档的一个或多个生产力应用中。然而,上述摄影图像的捕捉可能会因一些缺陷而受到损害。例如,许多照片必须以一个角度(这可能是由于用户所处的房间的物理尺寸的限制)并且在不太理想的照明条件(例如,由于会议室中的源自入射光的眩光)下进行拍摄。因此,捕获的摄影图像经常包含在外部生产力应用中使用该图像之前可能至少部分地被矫正的不想要的视角偏移(perspective skew)以及不想要的区域(例如在白板框架之外的墙或在文档页边界之外的桌子表面)。此外,捕获的摄影图像可包含入射光残余的反射,从而使得这些图像在被生产力应用软件消费之前需要被“清理”。

概述

本公开描述了用于检测由例如智能手机、平板或任何其他合适的移动计算设备捕获的图像的白板区域或文档区域的边界的技术和架构。具体而言,这样的边界可包括通过四边形检测过程在图像中检测到的相对大量的四边形结构中的一个。该边界通过选择由根据一组准则被相应地排序的一些四边形候选中的一个来确定。

四边形检测过程可涉及利用基于颜色的边缘检测的线段检测器。在将一系列线段拟合到检测到的边缘点之后,该过程包括移除和合并小的或不稳定的线段的直线验证功能。减少直线的数量提高了直线检测的准确度并且可加速四边形检测过程。

两种不同的排序处理被用于确定四边形候选中的哪个四边形是图像的白板或文档区域的边界。一种排序处理可被用于白板图像,而另一种排序处理可被用于文档图像。例如,针对白板图像的排序处理可涉及用于帮助标识图像中的白板区域的笔划-标记(stroke-mark)检测,同时排除可能在图像的背景中的诸如白色墙壁或白色桌子的模棱两可的区域。针对文档图像的排序处理可涉及考虑图像中的直线颜色对比度的能量函数。

提供本概述以便以简化的形式介绍以下在详细描述中进一步描述的一些概念。本概述并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。例如术语“技术”可指代上述上下文和通篇文档中所准许的(诸)系统、(诸)方法、计算机可读指令、(诸)模块、算法、硬件逻辑(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑器件(CPLD))和/或(诸)其他技术。

附图简述

详细描述参考附图进行阐述。在附图中,附图标记中最左边的数字标识该附图标记首次出现的附图。在不同附图中使用同一附图标记指示相似或相同的项或特征。

图1是描绘根据各种实现的其中可实现本文中所描述的技术的环境的框图。

图2是描绘根据各种实现的其中可实现本文中所描述的技术的设备的框图。

图3是根据各种实现的其中可实现本文中所描述的技术的移动计算设备的框图。

图4例示了根据各种实现的计算设备的屏幕显示,该计算设备包括用于捕捉图像以供处理的用户界面。

图5是例示根据各种实现的检测包括白板图像或文档图像的图像中的四边形的过程的流程图。

图6是例示根据各种实现的检测包括白板图像或文档图像的图像中的边缘的过程的流程图。

图7是例示根据各种实现的针对包括白板图像或文档图像的图像的直线检测和验证的过程的流程图。

图8和图9例示了根据各种实现的对共线直线合并(collinear line merging)的建模。

图10是例示根据各种实现的共线直线合并的过程的流程图。

图11是例示根据各种实现的检测笔划-标记以及对候选四边形进行排序的过程的流程图。

图12是例示根据各种实现的确定图像中的白板区域的边界的过程的流程图。

详细描述

概览

本公开描述了用于检测由例如智能手机、平板或其他移动计算设备或计算设备所捕获的图像中的白板或文档的边界的技术和架构。这样的边界可包括四边形结构,以下被称为“四边形”。包括白板或文档的图像还可包括背景(例如,在白板/文档的区域之外的图像区域)和前景(例如,在白板/文档的区域内的图像区域)。背景和前景可包括一些直线、形状、标记、对比颜色部分等。例如,图像的白板区域可能基本上被用干擦笔(dry eraser)或其他毡笔(felt pen)书写工具所写的文字、图画、表格等的标记覆盖。这样的毡笔标记在下文中被称为笔划-标记。因此,除了作为白板边界的四边形之外,这样的图像的数字化分析可检测任何数量的四边形。因此,本文中所描述的实现尤其描述了用于确定多个四边形中的哪个表示图像的白板或文档区域的边界的技术。

在一些实现中,用于确定图像中的白板或文档区域的边界的技术可包括将图像的文档区域或图像的白板区域划分成多个颜色分量,并且检测图像的文档区域或图像的白板区域中的边缘。该技术还可包括至少部分地基于检测到的边缘来生成线段,以及生成包括线段的子集的四边形候选。随后可根据四边形候选作为图像的文档区域或图像的白板区域的边界的可能性对四边形候选进行排序。

在一些实现中,可针对包括文档区域的图像执行第一类型的排序处理,而针对包括白板区域的图像可执行第二类型的排序处理。第一类型的排序处理不同于第二类型的排序处理。

例如,第一类型的排序处理可涉及向四边形候选分配相应的分数,其中个体四边形候选的分数至少部分地基于对该个体四边形候选至少部分地加以限定的区域的颜色对比度。

在一些实现中,被用于包括白板区域的图像的第二类型的排序处理可包括将包括白板区域的图像划分成多个网格、确定每个网格的颜色、计算四边形候选的至少一部分的交叉空间、确定交叉空间的颜色,以及至少部分地基于每个网格的颜色和交叉空间的颜色来确定图像的前景和图像的背景。

参考图1-12进一步描述各种实现。

示例环境

图1是描绘根据各种实现的在其中涉及本文所述的图像处理的实现可以操作的环境100的框图。在一些示例中,环境100的各种设备和/或组件包括可经由一个或多个网络104彼此通信并与外部设备通信的分布式计算资源102。

例如,(诸)网络104可包括诸如因特网之类的公共网络、诸如机构和/或个人内联网的专用网络或者专用和公共网络的一些组合。(诸)网络104还可包括任何类型的有线和/或无线网络,包括但不限于局域网(LAN)、广域网(WAN)、卫星网络、有线网络、Wi-Fi网络、WiMax网络、移动通信网络(例如3G、4G等)或其任何组合。(诸)网络104可利用通信协议,包括基于分组的和/或基于数据报的协议,诸如网际协议(IP)、传输控制协议(TCP)、用户数据报协议(UDP)或其他类型的协议。而且,(诸)网络104还可包括促进网络通信和/或形成网络的硬件基础的一些设备,诸如交换机、路由器、网关、接入点、防火墙、基站、中继器、主干设备等等。

在一些示例中,(诸)网络104可进一步包括能够连接到无线网络(诸如无线接入点(WAP))的设备。各示例支持通过在各种电磁频率(例如,射频)上发送和接收数据的WAP的连接,包括支持电气和电子工程师协会(IEEE)1302.11标准(例如,1,302.11g、1302n等)的WAP和其他标准。

在各种示例中,(诸)分布式计算资源102包括计算设备,诸如设备106(1)–106(N)。各示例支持(诸)设备106可包括在群集或其他分组的配置中操作以共享资源、平衡负载、提升性能、提供故障切换支持或冗余或用于其他目的的一个或多个计算设备的情况。虽然被例示为服务器,但是(诸)设备106可包括多种多样的设备类型并且不限于任何特定类型的设备。(诸)设备106可包括(诸)专用计算设备108。

例如,(诸)设备106可包括具有可操作地连接到计算机可读介质112、(诸)I/O接口114和(诸)网络接口116的一个或多个处理单元110的任何类型的计算设备。计算机可读介质112可具有存储在其上的图像处理框架118。例如,图像处理框架118可包括当由(诸)处理单元110执行时从客户端服务器(诸如(诸)专用计算设备120)接收和处理图像的计算机可读代码。。可经由(诸)网络104与(诸)设备106通信的(诸)专用计算设备120可包括具有可操作地连接到计算机可读介质124、(诸)I/O接口126和(诸)网络接口128的一个或多个处理单元122的任何类型的计算设备。(诸)I/O接口可包括显示设备。计算机可读介质124可具有存储在其上的专用计算设备侧图像处理框架130。例如,图像处理框架130可包括当由(诸)处理单元122执行时执行图像处理操作的计算机可读代码。

图2描绘说明性设备200,其可表示例如图1中例示出的(诸)设备120。说明性设备200可包括具有可操作地连接到计算机可读介质204(诸如计算机可读介质112或124)的一个或多个处理单元202(诸如处理单元110或122)的任何类型的计算设备。该连接可经由总线206或者经由另一可操作连接,总线206在一些实例中可包括系统总线、数据总线、地址总线、PCI总线、迷你PCI总线(Mini-PCI bus)以及任何种类的本地、外围和/或独立总线中的一个或多个。(诸)处理单元202可表示例如被合并在设备200中的CPU。(诸)处理单元202可类似地被可操作地连接到计算机可读介质204。

计算机可读介质204可包括至少两种类型的计算机可读介质,即计算机存储介质和通信介质。计算机存储介质可包括以用于存储信息(以经压缩的或未经压缩的形式)的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质,诸如用来执行本文中所描述的过程或方法的计算机(或其他电子设备)可读指令、数据结构、程序模块或其他数据。计算机可读介质112和计算机可读介质124是计算机存储介质的示例。计算机存储介质包括但不限于硬盘驱动器、软盘、光盘、CD-ROM、DVD、蓝光、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、闪存、磁卡或光卡、固态存储器设备或者适用于储存电子指令的其他类型的介质/机器可读介质。

作为对比,通信介质可将计算机可读指令、数据结构、程序模块或其他数据具体化为已调制数据信号(诸如载波)或其他传输机制。如本文中所定义的,计算机存储介质不包括通信介质。

设备200可包括但不限于:台式计算机、服务器计算机、web服务器计算机、个人计算机、智能电话、移动计算机、膝上型计算机、平板计算机、可穿戴计算机、植入式计算设备、电信设备、车载计算机、启用网络的电视、瘦客户端(thin client)、终端、个人数据助理(PDA)、游戏主机、游戏设备、工作站、媒体播放器、个人视频录像机(PVR)、机顶盒、相机、用于包括在计算设备、电器或任何其他类型的计算设备中的集成组件(诸如一个或多个分开的处理器设备208,诸如CPU型处理器(例如微处理器)210、GPU 212或(诸)加速器设备214)。

在一些示例中,如关于设备200所示,计算机可读介质204可储存可由(诸)处理单元202执行的指令,(诸)处理单元202可表示被合并在设备200中的CPU。计算机可读介质204还可储存可由外部CPU型处理器210执行、可由GPU 212执行并且/或者可由加速器214(诸如FPGA型加速器214(1)、DSP型加速器214(2)或任意内部或外部加速器214(N))执行的指令。

被储存在计算机可读介质204上的可执行指令可包括例如操作系统216、图像处理框架218以及可由(诸)处理单元202和/或210加载并执行的其他模块、程序或应用。例如,图像处理框架218可包括当由(诸)处理单元202执行时执行图像处理操作的计算机可读代码。在一些实现中,模块可包括用于将文档的图像或白板的图像划分成多个颜色分量的颜色划分模块;用于检测文档的图像或白板的图像中的边缘的边缘检测模块;至少部分地基于检测到的边缘来生成线段的线段生成器模块;用于生成包括线段的子集的四边形候选的四边形生成器模块;以及根据四边形候选作为文档的图像或白板的图像的边界的可能性对四边形候选进行排序的排序模块。

替代地或附加地,本文中所描述的功能可由一个或多个硬件逻辑组件(诸如加速器214)来执行。作为示例而非限制,可被使用的硬件逻辑组件的说明性类型包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑器件(CPLD)等。例如,加速器214(N)可表示混合设备,诸如包括被嵌入在FPGA架构中的CPU核的混合设备。

在所例示出的示例中,计算机可读介质204还包括数据存储220。在一些示例中,数据存储220包括诸如数据库、数据仓库或其他类型的结构化或非结构化数据存储之类的数据存储。在一些示例中,数据存储220包括具有一个或多个表、索引、存储的过程等的关系型数据库以实现数据访问。数据存储220可储存用于被储存在计算机可读介质204中和/或由(诸)处理器202和/或210和/或加速器214执行的进程、应用、组件、和/或模块的操作的数据。在一些示例中,数据存储220可储存文档、纸、笔记、白板或黑板等的图像。替代地,以上所提及的数据中的一些或全部可被储存在分开的存储器222上,诸如CPU型处理器210(例如,(诸)微处理器)上板载的存储器222(1)、GPU 212上板载的存储器222(2)、FPGA型加速器214(1)上板载的存储器222(3)、DSP型加速器214(2)上板载的存储器222(4),和/或另一加速器214(N)上板载的存储器222(M)。

设备200还可包括一个或多个输入/输出(I/O)接口224(诸如I/O接口114或126),以允许设备200与输入/输出设备(诸如包括外围输入设备(例如,键盘、鼠标、笔、游戏控制器、语音输入设备、触摸输入设备、姿势输入设备等)的用户输入设备和/或包括外围输出设备(例如,显示器、打印机、音频扬声器、触觉输出等)的输出设备)进行通信。设备200还可包括一个或多个网络接口226(诸如网络接口116或128)以通过网络104实现计算设备200和其他联网设备(诸如其他设备120)之间的通信。这样的网络接口226可包括一个或多个网络接口控制器(NIC)或其他类型的收发机设备,以通过网络发送和接收通信。

在一些实现中,设备200可包括图像捕捉设备228(诸如相机),以捕捉例如文档、白板或黑板的图像。图像捕捉设备228可将数字化的图像提供给图像处理框架218或设备200的任何其他组件。

图3是根据各种实现的其中可实现本文中所描述的技术的移动计算设备300的框图。移动计算设备300可包括但不限于智能电话、平板个人计算机、膝上型计算机等,利用它们可实践各种实现。在图3中例示出的特定示例实现中,移动计算设备300可以是具有输入元件和输出元件两者的手持式计算机。输入元件可包括允许用户将信息输入到移动计算设备300中的触摸屏显示器302、相机304和输入按钮306。移动计算设备300还可结合允许进一步的用户输入的任选的侧面输入元件308。任选的侧面输入元件308可以是旋转开关、按钮、或任何其他类型的手动输入元件。在该示例实现中,侧面输入元件308被附加到移动计算设备300,但是可以理解,侧面输入元件308可物理地与移动计算设备300分开并能够通过无线通信远程地将输入提供到移动计算设备300。在替代实现中,移动计算设备300可结合更多或更少的输入元件。在又一替代实现中,移动计算设备可以是便携式电话系统,诸如具有显示器302和输入按钮306的蜂窝电话。移动计算设备300还可包括任选的键盘310。任选的键盘310可以是物理键盘或者在触摸屏显示器上生成的“软”键盘。

移动计算设备300可结合能够显示图形用户界面(GUI)的输出元件,诸如显示器302。其他输出元件包括扬声器312、麦克风314和LED 316。附加地,移动计算设备300可结合振动模块(未示出),该振动模块使得移动计算设备300振动以将事件通知给用户。在又一个实现中,移动计算设备300可结合耳机插孔(未示出),以用于提供另一种提供输出信号的手段。

尽管此处结合移动计算设备300进行描述,但在替代实现中,本发明还可结合任何数量的诸如在桌面环境中的计算机系统、膝上型或笔记本计算机系统、多处理器系统、基于微处理器或可编程消费电子产品、网络PC、小型计算机、大型计算机等来被使用。各种实现也可在分布式计算环境中被实施,其中任务由在分布式计算环境中通过通信网络链接的远程处理设备来执行;程序可位于本地和远程存储器存储设备这两者中。概言之,任何具有多个环境传感器、多个输出元件和多个通知事件类型的计算机系统可结合此处描述的各个实现,所述多个输出元件用于向用户提供通知。

图4例示了根据各种实现的计算设备402的屏幕显示400,其包括用于捕捉图像以供处理的用户界面。用户界面可包括用户控件404、406和408。例如,用户控件404可被用来选择被配置成用于标准摄影图像的图像处理模式。用户控件406可被用来选择被配置成用于白板图像的图像处理模式。用户控件408可被用来选择被配置成用于文档图像的图像处理模式。根据各种实现,用户控件404、406和408的选择可通过包括轻敲和滑动手势的任何数量的手势来作出。如图4中所例示的,用户控件406已被选择用于白板图像处理,并且用户(由手410表示)正准备捕捉可例如被安装在具有天花板414或其他背景对象的会议室的墙上的白板412的图像。然后,用户可捕捉如在屏幕显示400中查看到的白板412和背景的图像。

图5是例示根据各种实现的检测包括白板图像或文档图像的图像中的四边形的过程500的流程图。处理器或计算机系统(诸如举例而言,图2中例示出的设备200)可执行过程500。虽然过程500可由多个设备或系统中的任何一种来执行,但是该过程将被描述成由处理器执行。将参考后续附图来描述过程500的各部分的细节。

在框502,处理器可接收包括文档、白板或黑板的彩色图像。例如,处理器可从存储器、从图像捕捉设备或从包括处理器的系统外部的源接收图像。文档可包括笔记、一页纸、杂志部分、收据等。在下文中,“白板”被用来表示可在其上进行书写和标记的物理显示板或表面,诸如粉笔板、白板、黑板或在其上有标记、笔迹、图表、(例如,被粘附到白板的)贴文等的任何其他板或基本上平的表面。这样的标记、笔迹、图表或贴文在本文中被称为笔划-标记。笔划-标记可包括白板上的标记,诸如字母、数字、字符、绘图、表格、图形或其任何部分。

彩色图像可包括被认为是白板的前景,以及背景,背景可包括不在白板的边界内的图像的所有部分,而不管图像的这些部分是位于白板的前面、后面或者与白板共面。例如,图像的背景可包括墙壁、天花板、地板、桌子或椅子的部分以及房间中的人(即使人们相比于白板可能更靠近捕获图像的相机),这里仅仅列举了几个例子。

在框504,处理器执行接收到的图像的边缘检测以生成边缘图。例如,处理器可相对于图像的最长边以某个因子按比例缩小该图像。这样的按比例缩小可提供的益处在于与原始图像相比,过程500的一些部分可利用经按比例缩小的图像更快地进行处理。通过这样的按比例缩小还可以减少噪声效应。经按比例缩小的图像可被划分成多个颜色通道。例如,图像可被划分成三个颜色通道,包括红色通道、绿色通道和蓝色通道。处理器可被配置成分开地检测每个通道中的直线。根据相应色彩将图像划分成多个通道的这样的过程可提供许多益处。例如,相比于分开的颜色通道,由单个灰色通道执行的直线检测可能对区分图像中的两种或更多种不同色彩具有限制。尽管示例性实现将图像划分成红色、绿色和蓝色颜色通道,但是将理解,图像的其他色彩划分同样可被使用。例如,在替代实现中,可使用红色、黄色和蓝色颜色通道。

在框506,处理器可执行直线拟合和验证过程。例如,处理器可将参数直线最佳拟合到边缘图中的边缘点。在一些实现中,相应的直线可被拟合到由边缘链接的边缘点对。处理器可确定被拟合到边缘点的直线的拟合误差。例如,拟合误差可至少部分地基于例如从直线上的点到边缘点的距离来测量该直线拟合到边缘点的程度。拟合误差可具有可由多种方法中的任何方法测量的定量值。如果这样的拟合误差小于阈值(例如,预先确定的阈值),则这指示边缘点符合经拟合的直线。处理器可至少暂时地从边缘图中移除符合的边缘点(其拟合误差小于预先确定的阈值)。经拟合的直线随后被添加到经拟合的直线列表中。处理器可随后使用剩余的边缘点(其还可包括具有比预先确定的阈值更大的拟合误差的离群值边缘点)来迭代地拟合直线、检查拟合误差并且从边缘图中排除离群值。然后,处理器可将直线分组成作为线性边缘点的部分的直线的子集。以这种方式,边缘图中的边缘点可被参数化成一系列的线段。

在框508,处理器可迭代地移除可能由噪声导致的相对小的线段。该过程可改进四边形检测的稳健性并加速检测四边形的计算。例如,在各个直线子集中,处理器可根据长度对直线排序。处理器可在相应的各个直线子集中移除比直线的中值长度短的线段。每个子集中剩余的线段可被用来找到可能是图像的白板或文档区域的边界的四边形候选。

在框510,处理器可根据是图像中的白板或文档的边界的可能性来对候选四边形进行排序。处理器可使用与用于对白板的候选四边形进行排序的排序技术不同的用于对文档的候选四边形的进行排序的排序技术。以下详细描述这样的排序技术。

在框512,处理器选择候选四边形中的一个作为白板或文档的边界。例如,最佳的(例如最高排名的)候选四边形可至少部分地基于框512中执行的排序来选择。

图6是例示根据各种实现的检测包括白板或文档的图像中的边缘的过程600的流程图。例如,过程600可以与过程500中的框502和504所表示的过程类似或相同。类似地,处理器或计算机系统(诸如举例而言,图2中例示出的设备200)可执行过程600。在框602,处理器可接收可包括例如文档或白板的彩色图像。在框604,处理器可执行用于平滑图像的过程。例如,处理器可使用低通高斯滤波器(例如σ=0.67)在每个颜色通道中对图像进行平滑。在框606,处理器可随后使用Sobel算子计算在X坐标(例如,水平)和Y坐标(例如,垂直)上的图像梯度。例如,Sobel算子或滤波器可被用来生成强调边缘和过渡的图像。Sobel算子是用于计算图像强度函数的梯度的近似的离散差分算子。在该图像中的每个点处,Sobel算子的结果是对应的梯度向量或该向量的范数。Sobel算子基于例如在水平和垂直方向上将图像与小的、可分离的并且整数值型的滤波器进行卷积。

对于平滑过程,处理器可选择具有局部最大梯度的像素并将这些像素链接在一起。这样的步骤类似于例如Canny检测操作。在框608,处理器可至少部分地基于平滑过程和图像梯度计算来生成边缘图。边缘图可被用于针对特定颜色通道图像检测图像中的对象。

图7是例示根据各种实现的针对包括白板或文档的图像的直线检测和验证的过程700的流程图。例如,过程700可产生可能的四边形的直线候选,随后将针对作为图像中的白板或文档的边界的似然对其进行排序。过程700中的过程步骤中的一些可以与例如过程500中的过程步骤类似或相同。处理器或计算机系统(诸如举例而言,例如图2中例示出的设备200)可执行过程700。

在框702,处理器可接收彩色图像。在框704,处理器可相对于图像的最长边以某个因子按比例缩小该图像。这样的按比例缩小可提供的益处在于与原始图像相比,过程700的一些部分可利用经按比例缩小的图像更快地进行处理。通过这样的按比例缩小还可以减少噪声效应。经按比例缩小的图像可被划分成三个颜色通道,例如包括红色通道、绿色通道和蓝色通道。在每个通道的框706中,处理器可检测边缘。在框708,处理器可将直线拟合到检测到的边缘的点。例如,参数直线(l:ax+by+c=0)可通过以下关系拟合到边缘图中的边缘点的集合{ei},其中(ei:(xi,yi)):

argmina,b,ci║ax+by+c║2

处理器可将这样的参数直线最佳拟合到边缘图中的边缘点。在一些实现中,相应的直线可被拟合到由边缘链接的边缘点对。处理器可确定被拟合到边缘点的直线的拟合误差。如果这样的拟合误差小于阈值(例如,预先确定的阈值),则这指示边缘点符合经拟合的直线。处理器可至少暂时地从边缘图中移除符合的边缘点(其拟合误差小于预先确定的阈值)。经拟合的直线随后被添加到经拟合的直线列表中。处理器可随后使用剩余的边缘点(其还可包括具有比预先确定的阈值更大的拟合误差的离群值边缘点)来迭代地拟合直线、检查拟合误差并且从边缘图中排除离群值。然后,处理器可将直线分组成作为线性边缘点的部分的直线的子集。以这种方式,边缘图中的边缘点可被参数化成一系列的线段。

在框710,处理器可执行共线合并以将来自三个颜色通道图像的检测到的线段合并在一起。在一些实现中,这样的合并的准则至少部分地基于任何两条线段的共线性。例如,图8例示了被标识为类型(1)、类型(2)和类型(3)的三种类型的共线性。例如,类型(1)共线性涉及不重叠的线段对。类型(2)共线性涉及部分重叠的线段对。类型(3)共线性涉及完全重叠的线段对。

图9例示了根据各种实现的对共线直线合并的直线对建模,并且图10是例示根据各种实现的共线直线合并的过程1000的流程图。例如,过程1000可在包括第一直线ab和第二直线cd的直线对上进行操作。处理器或计算机系统(诸如举例而言,图2中例示出的设备200)可执行过程1000。

图9例示了包括直线ab和直线cd的直线对。每条直线实际上被延长,使得经延长的直线具有相同的长度。例如,直线ab被延长为直线ad’,并且具有与延长自直线cd的直线a’d相同的长度。从这两条直线的所有端点投射正交线。例如,直线aa’从端点a投射,直线cc’从端点c投射,直线bb’从端点b投射并且直线dd’从端点d投射。如将在以下看到的,过程1000使用该构造来确定是否合并直线ab和cd。

在过程1000中,在框1002,处理器可计算直线ab和cd之间的角度θ(图9将直线ab和cd描绘成平行的,但是不必如此)。在框1004,处理器可确定角度θ是否小于阈值角度。如果不是,则过程1000可行进到框1006,其中直线ab和直线cd不应当被合并在一起。另一方面,如果角度θ小于阈值角度,则过程1000可行进到框1008,其中处理器执行构造,如图9中例示出的那样。这样的构造涉及计算从直线ab到另一直线cd的投射,反之亦然。并且,在框1010,处理器可将直线对的共线性类型分类为类型(1)、类型(2)或类型(3)中的一种。

过程1000的剩余部分至少部分地基于直线对所在的四个条件中的一个。四个条件被标识为条件A、条件B、条件C和条件D,并且至少部分地基于直线对类型(例如,类型(1)、类型(2)或类型(3))。条件A、条件B、条件C和条件D被定义为如下。

条件A是“类型(2)或类型(3)并且max{|ac'|,|bd'|,|a'c|,|b'd|}<阈值”。条件(B)是“max{|ac'|,|bd'|}<∈·|ab|,max{|a'c|,|b'd|}<∈·|cd|,dmax<阈值,并且min{|a'c|,|a'd|,|b'c|,|b'd|}<阈值”。条件(C)是“max{|ac'|,|bd'|}<∈·|ab|,max{|a'c|,|b'd|}<∈·|cd|,dmax<阈值”。条件(D)是“dmax<阈值”。此处,当|ab|>|cd|时,dmax是max{|ac'|,|bd'|},否则dmax=max{|a'c|,|b'd|})。字母对(例如ab、bd、ac、b’d等)指代线长。当然,这样的条件和定义仅仅是示例,并且所要求保护的主题不限于此。

继续过程1000,在框1012,处理器确定直线对ab-cd是否处于条件A中。如果不是,则过程1000可行进到框1014,其中直线将不被合并在一起。另一方面,如果直线对ab-cd处于条件A中,则过程1000可行进到框1016,其中该直线对基于其类型被分类。例如,如果直线对ab-cd是类型(1),则过程1000行进到框1018。如果直线对ab-cd处于条件B中,则处理器将合并直线,否则处理器将不合并直线。如果直线对ab-cd是类型(2),则过程1000行进到框1020。如果直线对ab-cd处于条件C中,则处理器将合并直线,否则处理器将不合并直线。如果直线对ab-cd是类型(3),则过程1000行进到框1022。如果直线对ab-cd处于条件D中,则处理器将合并直线,否则处理器将不合并直线。

返回到图7中框712处的过程700,处理器可根据检测到的线段在图像中的位置将它们分类到四个子集中:{左侧、顶边、右侧和底边}。用于执行这样的分类的技术可包括计算每条线段的斜率。如果斜率更接近水平而非垂直,则线段被放置在直线的顶边或底边子集中。为了在顶边和底边子集之间进行区分,处理器可检查线段的端点是低于还是高于图像中心。类似地,处理器可将线段分配到直线的左侧或右侧子集。在这样的直线分类之后,任何可能的四边形可由四条线段的组合来生成,其中每条线段可处于四个直线子集中的一个中。

在框714,处理器可排除可能由于噪声导致的相对小的线段。该步骤可改进四边形检测的稳健性并加速检测的计算。例如,在每个直线子集中,处理器可根据直线的长度对它们进行排序。最终,处理器可移除具有小于直线所处的直线子集中的中值长度的长度的线段。

以上描述的过程可产生多个四边形候选,其中的一个是图像中白板区域或文档区域的边界。为了确定哪个四边形候选最有可能是边界,处理器可执行排序和消除过程,其中相对差的四边形候选从选择过程中被移除。这样的排序和消除过程可以是级联过程,其中一个过程被用于初始排序和消除,并且后续过程被用于最终排序和消除过程。初始排序和消除过程可从所有可能的四边形候选中产生是次优的四边形(例如相对差的候选)的子集。最终排序和消除过程可从获得自初始排序和消除过程的四边形的子集中选择最佳的一个。

在第一排序和消除过程中,四边形(例如,四边形候选)可根据以下的关系进行评分:

“Area”是四边形的面积大小,“CoveredPerimeter”是四边形的检测到的直线的长度与四边形边界的长度的比率,“Ratio”是“CoveredPerimeter”与四边形的周长的比率,“CornerPenalty”是从四边形的检测到的直线的端点到四边形的角的距离的和,并且“ImageEdgePenalty”=(不是图像边界边缘的直线的数目/4)2。α、β、γ和是反映不同能量项的折衷的用户可选参数。为了获得分数的更佳参数,处理器可在经标记的数据集上训练线性回归而非维持原始参数(所有都被手动设为1)。例如,在特定算法中,α=1,β=4,γ=2,在每个可能的四边形的分数被计算出后,处理器可选择具有最高分数的N(例如,N=10)个最佳候选作为第二排序和消除过程的次优四边形的子集。

在第二排序和消除过程中,两种不同的策略被使用,一种策略针对白板的图像中的四边形而另一种策略针对文档的图像中的四边形。就文档的图像中的四边形的排序和消除过程而言,可根据以下关系对四边形进行评分:

等式2类似于等式1,但是具有以下不同。“ImageEdgePenalty”=((不是图像边界边缘的直线的数目+1)/5)2。该关系帮助避免图像边缘的零质量惩罚。

“ColorContrast”=Πi∈lines x(pixContrasti)1/2,

[等式3]

其中“lines”是线段的子集{图像的左侧、顶边、右侧、底边},并且“pixContrast”=min{(║Cin-Cout2/3)1/2,1}。Cin和Cout是直线的两个边缘侧的平均颜色(mean color)。在计算所有四边形的分数之后,处理器可选择具有最高分数的四边形作为输出。

图11是例示根据各种实现的检测笔划-标记以及对候选四边形进行排序的过程1100的流程图。就白板的图像(和文档相比)中的四边形的排序和消除过程而言,可通过过程1100对四边形进行排序。在框1102,处理器可通过接收诸如举例而言在过程700中框704所描述的经按比例缩小的图像来开始过程1100。在框1104,处理器可将彩色图像转换成灰度图像。在框1106,处理器可对灰度图像应用高斯差分(DoG)操作。此处,在特定实现中,

对于白板,

对于黑板,

其中Gσ=4是具有标准方差σ=4的高斯滤波器,并且是卷积算子。“Clamp”是计算被钳制到由第二和第三经指定的自变量所定义的范围的第一经指定的自变量的值的操作。处理器可对DoGImage进行限值(threshold)以获得笔划-标记的初始掩码。为了自动估计图像的阈值,处理器可根据DoGImage建立直方图,然后计算附近直方图组(histogram bin)的梯度。如果梯度与直方图组的峰值的比率大于常数(例如,64),则处理器可将组索引记录为阈值,并使用组索引对DoGImage进行限值。

在框1108,处理器接收诸如举例而言来自过程700的框712的检测到的直线。在框1110,处理器移除一些直线和孤立的点。例如,检测和生成直线的各种过程可能产生噪声,诸如伪线或点。一些噪声由相对接近图像边缘的相对长的直线以及DoGImage上的孤立的点和黑点产生。处理器可使用八邻域FloodFill(泛洪填充)算法来检测连通分量,并且检查各个分量是否在一直线上或者各个分量是否为可被擦除的孤立的点(或黑点)。例如,处理器可考虑不同的方式来擦除这样的噪声。例如,对于直线,如果线段的长度大于图像边界的最小长度的60%或者直线位置(例如,中心、始点或终点)位于图像边界的边缘(例如,边缘可被认为是图像边界长度的20%)之内,则覆盖直线的连通分量应从DoGImage中被移除。对于孤立的点和黑点,处理器可计算连通分量的边界框。如果分量区域大小与边界框大小的比率大于0.8,则举例而言,处理器可认为该分量是要被移除的孤立的点或黑点。

在框1112,处理器接收诸如举例而言来自过程500的框508的候选四边形。为了对四边形进行排序,处理器可确定与作为背景的图像区域相对的作为前景的图像区域。处理器可通过将其颜色与参考色的颜色进行比较来标识该前景,如下所述。

在框1114,处理器可计算在上述第一排序处理中找到的所有N个四边形候选的交集区域。虽然交集可能并非恰好是前景,但是处理器可将其视为对前景的参考。在框1116,处理器可将经按比例缩小的图像划分成网格。对于特定示例,网格大小可以是25×25像素。对于每个网格,处理器可计算其平均RGB颜色和其Lab颜色信息。此外,处理器可计算交集区域内的平均RGB颜色和中值Lab颜色。平均RGB和中值Lab可被认为是参考颜色。一方面,参考颜色的灰度值可被用来确定板是白板还是黑板。例如,如果参考颜色的灰度值大于中间灰色(即,128),则其是白板。否则,其为黑板。对于白板和黑板,在框1106的DoGImage的计算是不同的。另一方面,参考颜色可被用于通过排除背景笔划-标记来生成前景笔划-标记图。然后,处理器可计算每个网格的RGB颜色与参考RGB颜色之间以及每个网格的LAB颜色与参考LAB颜色之间的相应距离(例如,L2范数欧几里德距离)。在框1118,处理器可根据平均颜色来标识前景。例如,如果每个网格的颜色与参考颜色之间的Lab距离小于第一阈值(对于特定示例,阈值=9),并且RGB距离小于第二阈值(对于特定示例,阈值=70),则响应网格可被视作前景,否则其被视作背景。在框1120,处理器可通过将图像中的所有笔划-标记分成随后被用来计算分数和排序的新特征的两个子集(即,前景笔划-标记和背景笔划-标记)来生成前景笔划-标记图。

在框1122,处理器可基于多个准则对每个四边形进行评分和排序。例如,准则之一是四边形边界之内的前景笔划的百分比(称为“Percentage(百分比)”)。另一个准则是四边形的大小与图像大小的比率。又一个标准是检测到的直线的长度与四边形边界的边界长度(例如,周长)的比率。该比率称为“CoveredPerimeter”。处理器可仅计算具有CoveredPerimeter>0.7的四边形的排序分数。该分数被定义为:

RankScore=Percentage-1/3×(四边形区域大小)/(图像大小)

使用Rankscore,处理器可将具有最高分数的四边形确定为图像中的白板区域的边界。

图12是例示根据各种实现的确定图像中的白板区域的边界的过程1200的流程图。处理器或计算机系统(诸如举例而言,图2中例示出的设备200)可执行过程1200。在框1202,处理器可接收包括白板的图像的图像。在框1204,处理器可检测图像中的多个四边形。例如,这样的过程可以与过程500中的框508所描述的过程类似或相同。在框1206,处理器可将图像划分成多个网格。在框1208,该划分可确定每个网格的颜色。例如,该过程可以与过程1100中的框1114至框1118所描述的过程类似或相同。在框1210,处理器可计算多个四边形的至少一部分的交集空间。在框1212,处理器可确定交集空间的颜色。在框1214,处理器可至少部分地基于每个网格的颜色和交集空间的颜色来确定图像的前景和图像的背景,其中前景在白板的图像的边界内。

示例A,一种用于图像处理的方法,所述方法包括:接收包括示出白板的区域的图像;检测所述图像中的多个四边形;将所述图像划分成多个网格;确定每个网格的颜色;计算所述多个四边形的至少一部分的交集空间;确定所述交集空间的颜色;以及至少部分地基于所述每个网格的颜色和所述交集空间的颜色来确定所述图像的前景和所述图像的背景,其中所述前景在示出所述白板的所述区域的边界内。

示例B,如示例A所述的方法,其中示出所述白板的所述区域包括笔划-标记,并且所述方法还包括:至少部分地基于在所述图像的所述前景中的相应四边形内的所述笔划-标记的数量对所述多个四边形进行排序;以及至少部分地基于所述排序来确定示出所述白板的所述区域的边界。

示例C,如示例A所述的方法,其中检测所述图像中的所述多个四边形包括:将所述图像划分成颜色通道,使得每个颜色通道包括所述图像的一种分量颜色;检测每个分量彩色图像的边缘,以便生成多条直线;以及至少部分地基于预先确定的准则,选择所述多条直线的子集以形成所述多个四边形。

示例D,如示例C所述的方法,其中所述预先确定的准则至少部分地基于(i)所述直线相对于彼此的角度和(ii)所述直线在所述图像中的位置。

示例E,如示例C所述的方法,其中所述多条直线包括直线对,并且所述方法还包括:至少部分地基于每对直线对的直线彼此重叠的量,将所述直线对中的每一对分类成三种直线对类型中的一种,并且其中所述预先确定的准则至少部分地基于所述直线对的分类。

示例F,如示例A至C中任一个所述的方法,其中所述图像是彩色图像,并且其中检测所述图像中的所述多个四边形包括:将所述彩色图像转换成包括所述笔划-标记的至少一部分的灰度图像;对所述灰度图像应用高斯差分操作以生成高斯差分图像;以及将阈值准则和泛洪填充操作应用于所述高斯差分图像以减少所述笔划-标记的数量。

示例G,如示例A至C中任一个所述的方法,其中所述多个四边形的所述至少一部分包括从所述多个四边形提取出的四边形的次优子集。

示例H,一种系统,包括:接收示出文档或白板的图像的输入机制;一个或多个处理单元;以及其上具有模块的计算机可读介质,所述模块包括:将示出所述文档或所述白板的所述图像划分成多个颜色分量的颜色划分模块;检测示出所述文档或所述白板的所述图像中的边缘的边缘检测模块;至少部分地基于所检测到的边缘来生成线段的线段生成器模块;生成包括所述线段的子集的四边形候选的四边形生成器模块;以及根据所述四边形候选是所述文档或所述白板的边界的可能性对所述四边形候选进行排序的排序模块。

示例I,如示例H所述的系统,其中所述图像示出所述文档或所述白板中的一个,其中所述排序模块对示出所述文档的所述图像执行第一类型的排序处理,并且对示出所述白板的所述图像执行第二类型的排序处理,并且其中所述第一类型的排序处理不同于所述第二类型的排序处理。

示例J,如示例I所述的系统,其中所述第一类型的排序处理包括:向所述四边形候选分配相应的分数,其中个体四边形候选的分数至少部分地基于对所述个体四边形候选至少部分地加以限定的区域的颜色对比度。

示例K,如示例I所述的系统,其中所述图像示出所述白板,并且其中所述第二类型的排序处理包括:将示出所述白板的所述图像划分成多个网格;确定每个网格的颜色;计算所述四边形候选的至少一部分的交集空间;确定所述交集空间的颜色;以及至少部分地基于所述每个网格的颜色和所述交集空间的颜色来确定示出所述白板的所述图像的前景和示出所述白板的所述图像的背景。

示例L,如示例K所述的系统,其中所述前景在所述白板的边界内。

示例M,如示例K所述的系统,其中所述白板包括笔划-标记,并且其中所述第二类型的排序处理还包括:至少部分地基于在示出所述白板的所述图像的所述前景中的相应四边形候选内的所述笔划-标记的数量来对所述多个四边形候选进行排序;以及至少部分地基于所述排序来确定所述图像中的所述白板的边界。

示例N,如示例K所述的系统,其中示出所述白板的所述图像包括彩色图像,所述白板包括笔划-标记,并且所述第二类型的排序处理还包括:将所述彩色图像转换成包括所述笔划-标记的至少一部分的灰度图像;对所述灰度图像应用高斯差分操作以生成高斯差分图像;以及将阈值准则和泛洪填充操作应用于所述高斯差分图像以减少所述笔划-标记的数量。

示例O,如示例H所述的系统,其中所述模块还包括:直线滤波器模块,所述直线滤波器模块至少部分地基于(i)所述线段相对于彼此的角度和(ii)所述线段在所述图像中的位置来减少所述线段的数量。

示例P,一种方法包括:接收包括示出白板的区域的图像;检测所述图像中的多个四边形;将所述图像划分成多个网格;确定每个网格的颜色;计算所述多个四边形的至少一部分的交集空间;确定所述交集空间的颜色;以及至少部分地基于所述每个网格的颜色和所述交集空间的颜色来确定所述图像的前景和所述图像的背景,其中所述前景在示出所述白板的所述区域的边界内。

示例Q,如示例P所述的方法,其中所述白板包括笔划-标记,并且其中所述动作还包括:至少部分地基于在所述图像的所述前景中的相应四边形内的所述笔划-标记的数量对所述多个四边形进行排序;以及至少部分地基于所述排序来确定示出所述白板的所述区域的边界。

示例R,如示例P所述的方法,所述动作还包括:将所述图像划分成颜色通道,使得每个颜色通道包括所述图像的一个分量彩色图像;检测每个分量彩色图像的边缘,以便生成多条直线;以及至少部分地基于预先确定的准则,选择所述多条直线的子集以形成所述多个四边形。

示例S,如示例R所述的方法,其中所述预先确定的准则至少部分地基于(i)所述直线相对于彼此的角度和(ii)所述直线在所述图像中的位置。

示例T,如示例P所述的方法,其中所述多个四边形的所述至少一部分包括从所述多个四边形提取出的四边形的次优子集。

结语

尽管已经用结构特征和/或方法动作专用的语言描述了本主题,但要理解,所附权利要求书中定义的主题不必限于所描述的具体特征或动作。相反,这些具体特征和步骤是作为实现权利要求的示例形式来公开的。

上述所有方法和过程可以用由一个或多个通用计算机或处理器执行的软件代码模块来具体化,并且可经由这些软件代码模块来完全自动化。代码模块可被储存在任何类型的计算机可读介质、计算机存储介质或其他计算机存储设备中。这些方法中的某些或全部可替代地用专用计算机硬件来具体化。

除非另外具体声明,否则在上下文中可以理解条件语言(诸如“能”、“能够”、“可能”或“可以”)表示特定示例包括而其他示例不包括特定特征、元素和/或步骤。因此,这样的条件语言一般并非旨在暗示某些特征、元素和/或步骤以任何方式对于一个或多个示例是必需的,或者一个或多个示例必然包括用于在有或没有用户输入或提示的情况下决定某些特征、元素和/或步骤是否包括在任何特定示例中或将在任何特定示例中被执行的逻辑。

除非另外具体声明,应理解联合语言(诸如短语“X、Y或Z中至少一个”)表示项、词语等可以是X、Y或Z中的任一者、或其组合。

本文所述和/或附图中描述的流程图中任何例程描述、元素或框应当被理解成潜在地表示包括用于实现该例程中具体逻辑功能或元素的一个或多个可执行指令的代码的模块、片段或部分。替代实现被包括在本文描述的示例的范围内,其中各元素或功能可被删除,或与所示出或讨论的顺序不一致地执行,包括基本上同步地执行或按相反顺序执行,这取决于所涉及的功能,如本领域技术人也将理解的。

应当强调,可对上述示例作出许多变型和修改,其中的元素如同其他可接受的示例那样应被理解。所有这样的修改和变型本文旨在被包括在本公开的范围内并且由所附权利要求书保护。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1