CN116225270A - 条码图像的获取方法及相关装置 - Google Patents
条码图像的获取方法及相关装置 Download PDFInfo
- Publication number
- CN116225270A CN116225270A CN202310217523.0A CN202310217523A CN116225270A CN 116225270 A CN116225270 A CN 116225270A CN 202310217523 A CN202310217523 A CN 202310217523A CN 116225270 A CN116225270 A CN 116225270A
- Authority
- CN
- China
- Prior art keywords
- image
- area
- bar code
- electronic device
- barcode
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
- G06F3/04842—Selection of displayed objects or displayed text elements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
- G06K7/1404—Methods for optical code recognition
- G06K7/1408—Methods for optical code recognition the method being specifically adapted for the type of code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
- G06K7/1404—Methods for optical code recognition
- G06K7/1439—Methods for optical code recognition including a method step for retrieval of the optical code
- G06K7/1443—Methods for optical code recognition including a method step for retrieval of the optical code locating of the code in an image
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
- G06K7/1404—Methods for optical code recognition
- G06K7/1439—Methods for optical code recognition including a method step for retrieval of the optical code
- G06K7/1447—Methods for optical code recognition including a method step for retrieval of the optical code extracting optical codes from image or text carrying said optical code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
- G06K7/1404—Methods for optical code recognition
- G06K7/1439—Methods for optical code recognition including a method step for retrieval of the optical code
- G06K7/1452—Methods for optical code recognition including a method step for retrieval of the optical code detecting bar code edges
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
- G06K7/1404—Methods for optical code recognition
- G06K7/146—Methods for optical code recognition the method including quality enhancement steps
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Electromagnetism (AREA)
- General Health & Medical Sciences (AREA)
- Toxicology (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Image Analysis (AREA)
- Position Input By Displaying (AREA)
Abstract
本申请公开了条码图像的获取方法及相关装置。电子设备在大角度扫描条码的场景下,可以检测摄像头所获取的包含条码的图像中条码所在区域。该方法可以准确地识别到条码所在的区域,避免由于条码边缘识别不准确而造成条码信息丢失的问题,获取条码图像,以提高解码成功率。并且,可以在保证解码成功率的情况下,降低解码时延,提高解码效率,提升扫码类应用的扫码速度,给用户更好的使用体验。
Description
技术领域
本申请涉及终端领域,尤其涉及条码图像的获取方法及相关装置。
背景技术
随着科技的发展,生活中随处可见条码。条码可用于帮助用户快速支付、跳转网页、获取信息、溯源等等。当用户使用终端扫描条码时,由于用户和条码之间的角度较偏等原因,会出现终端识别条码的速度慢,甚至不能识别条码的情形。
发明内容
本申请提供了条码图像的获取方法及相关装置,可以在保证解码成功率的情况下,降低解码时延,提高解码效率,提升扫码类应用的扫码速度,给用户更好的使用体验。
第一方面,提供了一种条码图像的获取方法,该方法应用于电子设备,该方法可包括:接收到用于触发扫码的用户操作;通过摄像头获取到包含条码的第一图像,摄像头的拍摄方向和条码所在平面的垂直方向之间成第一角度,第一角度大于0;如果条码的白色背景区域在第一图像中的面积占比大于或等于阈值,则使用扫描线算法识别第一图像中条码所在的第一区域;如果条码的白色背景区域在第一图像中的面积占比小于阈值,则使用直线检测算法识别第一图像中条码所在的第二区域。
实施第一方面提供的方法,可以准确地检测到摄像头所获取的包含条码的图像中条码所在区域,提高条码在得到的图像中的占比。并且,该方法可以避免由于条码边缘识别不准确而造成条码信息丢失的问题,准确地获取到条码图像,以提高解码成功率。并且,本申请实施例所使用的边缘检测算法效率高,以及,精准定位了条码所在的区域,可以在保证解码成功率的情况下,降低解码时延,提高解码效率,提升扫码类应用的扫码速度,给用户更好的使用体验。
结合第一方面,在一些实施方式中,该方法还包括:对第二区域做角度矫正,得到第二图像。
通过上一实施方式,能够对具有一定角度时拍摄到的条码图像进行矫正,得到易识别的条码图像,从而提高解码成功率。
结合上一实施方式,电子合并可以识别第二区域的角点,并利用角点来对第二区域做角度矫正,得到第二图像。通过识别角点,能够更快、更准确地对第二区域进行矫正,从而得到易识别的条码图像。
结合上一实施方式,电子设备可以使用透视变换算法或仿射变换算法,对第二区域做角度矫正,得到第二图像。
结合上述对第二区域做角度矫正以得到第二图像的各个实施方式,在一些实施方式中,该方法还可包括:识别第二图像中的条码所表示的信息;根据信息执行对应的第一操作。
结合第一方面,在一些实施方式中,电子设备识别第一区域或第二区域之前,该方法还可包括:对第一图像做二值化处理,得到第一图像的二值化图像;确定二值化图像中面积最大的轮廓;将轮廓在第一图像中围成的区域面积,确定为条码的白色背景区域在第一图像中的面积。
结合上一实施方式,在一些实施方式中,
使用扫描线算法识别第一图像中条码所在的第一区域,具体包括:使用扫描线算法扫描轮廓在第一图像中围成的区域,确定上侧最先出现黑色像素值的行、下侧最晚出现黑色像素值的行、左侧最先出现黑色像素值的列、右侧最晚出现黑色像素值的列;将确定的行和列围成的区域,确定为第一区域;
或者,
使用直线检测算法识别第一图像中条码所在的第二区域,具体包括:使用直线检测算法检测轮廓在第一图像围成的区域中的直线,选择检测到的直线中的部分或全部直线;将选择的部分或全部直线围成的区域,确定为第二区域。
结合第一方面,在一些实施方式中,第一角度大于第一值,第一值大于0。该第一角度可以根据实际需要动态设置,例如第一角度可以设置为30度。这样,电子设备在大角度扫描条码的场景下,可以检测摄像头所获取的包含条码的图像中条码所在区域,并可以准确地识别到条码所在的区域,避免由于条码边缘识别不准确而造成条码信息丢失的问题,获取到易识别的条码图像,以提高解码成功率。
结合第一方面,在一些实施方式中,电子设备识别第一区域或第二区域之前,该方法还可包括:识别到第一图像中的条码发生了形变。在识别到条码发生形变的情况下,电子设备可认为当前摄像头的拍摄方向和条码所在平面的垂直方向之间有一定的角度。
结合上一实施方式,在一些实施方式中,第一图像中的条码发生形变的程度大于第二值。当形变程度大于第二值时,电子设备可认为当前摄像头的拍摄方向和条码所在平面的垂直方向之间的角度大于了一定值。
在一些实施方式中,第一图像中条码的形变程度可以根据电子设备的检测模型返回的包含该条码的检测框的长宽比来衡量,例如该长宽比大于1.14,则可认为形变程度大于第二值。
结合第一方面,在一些实施方式中,识别到第一区域或第二区域之后,该方法还可包括:识别第一区域或第二区域中的条码所表示的信息;根据信息执行对应的第一操作。
在一些实施方式中,条码所表示的信息可包括但不限于:文字、数值、图片、网页链接、支付信息(如支付金额、收款方)、联系人链接、公众号链接、小程序链接等等。
在一些实施方式中,根据条码所表示的信息执行的第一操作可包括但不限于:显示文本、图片、显示付款界面、显示添加好友界面、打开小程序等等。
第二方面,提供了一种电子设备,包括:存储器、一个或多个处理器;存储器与一个或多个处理器耦合,存储器用于存储计算机程序代码,计算机程序代码包括计算机指令,一个或多个处理器调用计算机指令以使得电子设备执行如第一方面或第一方面的任意一种实施方式中电子设备所执行的方法。
第三方面,本申请实施例提供了一种计算机可读存储介质,包括指令,当指令在电子设备上运行时,使得电子设备执行如第一方面或第一方面的任意一种实施方式中电子设备所执行的方法。
第四方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行如第一方面或第一方面的任意一种实施方式中电子设备所执行的方法。
第五方面,本申请实施例提供了一种芯片系统,所述芯片系统包括至少一个处理器,用于实现如第一方面或第一方面的任意一种实施方式中电子设备所执行的方法。
实施本申请提供的技术方案,电子设备在大角度扫描条码的场景下,可以检测摄像头所获取的包含条码的图像中条码所在区域。该方法可以准确地识别到条码所在的区域,避免由于条码边缘识别不准确而造成条码信息丢失的问题,获取条码图像,以提高解码成功率。并且,可以在保证解码成功率的情况下,降低解码时延,提高解码效率,提升扫码类应用的扫码速度,给用户更好的使用体验。
附图说明
图1为本申请实施例提供的条码图像的获取方法的流程图;
图2A-图2C为本申请实施例提供的一组用户界面;
图3A-图3C为本申请实施例提供的三组不同条码图像的获取过程示意图;
图4为本申请实施例提供的电子设备扫码时的角度示意图;
图5为本申请实施例提供的电子设备大角度扫码时二维码的形变示意图;
图6为本申请实施例提供的电子设备识别条码所在区域的角点的流程图;
图7为本申请实施例提供的电子设备对条码图像进行矫正的示意图;
图8为本申请实施例提供的一种电子设备的硬件结构示意图;
图9为本申请实施例提供的一种电子设备的模块框图。
具体实施方式
下面将结合附图对本申请实施例中的技术方案进行清楚、详尽地描述。其中,在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;文本中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为暗示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征,在本申请实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
本申请以下实施例中的术语“用户界面(user interface,UI)”,是应用程序或操作系统与用户之间进行交互和信息交换的介质接口,它实现信息的内部形式与用户可以接受形式之间的转换。用户界面是通过java、可扩展标记语言(extensible markuplanguage,XML)等特定计算机语言编写的源代码,界面源代码在电子设备上经过解析,渲染,最终呈现为用户可以识别的内容。用户界面常用的表现形式是图形用户界面(graphicuser interface,GUI),是指采用图形方式显示的与计算机操作相关的用户界面。它可以是在电子设备的显示屏中显示的文本、图标、按钮、菜单、选项卡、文本框、对话框、状态栏、导航栏、Widget等可视的界面元素。
本申请以下实施例提供了条码图像的获取方法及相关装置,该方法可应用于电子设备大角度扫描条码的场景。
用于执行本申请实施例所提供的方法的电子设备配置有摄像头,该电子设备可包括多种类型。例如,该电子设备可以是手机、平板电脑、桌面型计算机、膝上型计算机、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本,以及蜂窝电话、个人数字助理(personal digital assistant,PDA)、增强现实(augmented reality,AR)设备、虚拟现实(virtual reality,VR)设备、人工智能(artificial intelligence,AI)设备、可穿戴式设备、车载设备、智能家居设备和/或智慧城市设备等,本申请实施例对该电子设备的具体类型不作特殊限制。
本申请实施例所提供的条码可包括但不限于:一维条码(bar code)、二维条码(2-dimensional bar code)、三维条码等。
其中,二维条码又可称为二维码,其常见的形式可包括QR code(quickresponsecode)、PDF417二维条码、Datamatrix二维条码、Maxicode二维条码、Code 49、Code16K、Code one等。二维码按一定规律在平面(二维方向上)分布黑白相间的特定几何图形,以记录信息。二维码利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何图形来表示信息。当然,其他类型的条码如一维条码、三维条码等,也有自身表达信息的方式,这里不再详述。
条码所表示的信息可包括但不限于:文字、数值、图片、网页链接、支付信息(如支付金额、收款方)、联系人链接、公众号链接、小程序链接等等。
一维码的形状通常为长方形,也可以为正方形。二维码的形状通常为正方形,也可以实现为圆形或其他形状。
扫码过程可以解释为电子设备通过摄像头采集包括条码的图像,并解析图像中的条码,得到条码表示的信息的过程。
在本申请实施例提供的条码图像的获取方法中,电子设备在大角度扫描条码的场景下,可以利用边缘检测算法,准确地检测到摄像头所采集的包含条码的图像中,条码所在区域。在一些实施方式中,还可以对该区域进行角度矫正,得到矫正后正视的条码图像。之后,电子设备可以识别校正后的条码图像中的条码,以获取该条码表示的信息。
实施该方法,电子设备可以准确地识别到条码所在的区域,可以避免由于条码边缘识别不准确而造成条码信息丢失的问题,准确地获取到易识别的条码图像,以提高解码成功率。并且,本申请实施例所使用的边缘检测算法效率高,可以在保证解码成功率的情况下,降低解码时延,提高解码效率,提升扫码类应用的扫码速度,给用户更好的使用体验。
下面将结合附图,详细介绍本申请实施例提供的条码图像的获取方法。
参考图1,图1为本申请实施例提供的条码图像的获取方法的流程示意图。图1以电子设备100执行该方法为例进行说明。如图1所示,该方法可包括如下步骤:
S101,电子设备100接收到用于触发扫码的用户操作。
本申请实施例的电子设备100可提供扫码功能。
电子设备100的扫码功能可以由以下任意一种或多种应用提供:1,专门提供扫码功能的独立应用程序。2,集成有扫码功能,并且还具备其他功能的综合能力应用。例如,支付类应用可以提供扫码功能,即时通讯类应用也可以提供扫码功能,拍摄类应用也可以提供扫码功能,视频类应用也可以提供扫码功能。不限于此,在一些实施方式中,电子设备100所访问的网页、小程序等也可以提供扫码功能。
电子设备100的扫码功能可以由以下任意一类或多类应用提供:1,系统应用,如系统类相机应用可提供扫码功能。2,第三方应用,例如第三方支付类应用、第三方即时通讯应用等也可以提供扫码功能。
在本申请实施例中,可以将提供扫码功能的应用称为扫码应用。
在S101中,电子设备100接收到的用于触发扫码的用户操作,可以是针对扫码应用输入的用户操作。如果该扫码应用在启动后会直接启用扫码功能,则该用于触发扫码的用户操作可以为启动该扫码应用的操作(如作用于桌面中该扫码应用图标的点击操作)。如果该扫码应用在启动后需要用户找到扫码功能的入口,则该用于触发扫码的用户操作可以为启动扫码应用后,打开扫码功能的操作,例如打开即时通讯类应用的扫一扫功能的用户操作,打开支付类应用的扫一扫功能的用户操作等。
用于触发扫码的用户操作的实现形式可包括多种,例如可包括点击操作、触摸操作、长按操作、语音指令、悬浮手势等等,本申请实施例对此不限定。
下面结合电子设备100上实现的UI来进一步介绍S101。
图2A示例性示出了一种扫码场景中,用户输入的用于触发扫码的用户操作。
如图2A所示,电子设备100可以显示有桌面的界面210。该界面210中显示了一个放置有应用图标的页面。其中,该页面可以包括多个应用图标(例如,专门提供扫码功能的独立应用图标211、设置应用图标、支付应用图标、聊天应用图标等等)。可选的,该放置有应用图标的页面的下方还可以显示页面指示符,该页面指示符可以表明桌面上页面总数,以及当前显示的页面与其他页面的位置关系。可选的,该放置有应用图标的页面的上方还显示包括有状态栏,包含多个应用图标的托盘(dock)区域等等。
如图2A所示,电子设备100可以接收到作用于图标211的输入(例如单击操作),响应于该输入,电子设备100启动扫码功能,在电子设备100的显示屏上显示如图2B所示的扫码界面220。扫码界面220的内容参考后文,这里暂不展开。
不限于图2A所示的通过启动专门提供扫码功能的独立应用来启动电子设备100的扫码功能,在其他的一些实施方式中,电子设备100还可以通过其他方式来启动扫码功能。例如,电子设备100还可以通过打开相机应用,或者,打开支付类应用的扫一扫等来启动扫码功能。
S102,电子设备100启动摄像头,并通过摄像头获取到包含条码的第一图像。
电子设备100接收到S101中用于触发扫码的用户操作后,可以启动摄像头。如果用户当前有意图扫码,则会移动电子设备100的位置,以使得条码位于电子设备100的摄像头的取景范围中。这样,电子设备100就能够通过摄像头获取到包含条码的第一图像。
电子设备100启动的摄像头可以是主摄,也可以是其他摄像头,这里不做限定。在一些实施方式中,也可以由用户来选择或者切换用于扫码的摄像头。
第一图像可以是对电子设备100的摄像头采集到的原始图像进行处理后的图像。这里采集及处理图像的参数可称为拍摄参数,拍摄参数可包括图像的宽度、图像的高度、对焦模式(包括自动对焦模式,手动对焦模式和定焦模式)、变焦模式(如数码变焦、物理变焦等)、对焦倍率、帧率、分辨率、图像的格式等等。可见,这里的第一图像可能是对摄像头采集的图像做裁剪后得到的图像。该拍摄参数可以是由电子设备100根据当前的场景,例如摄像头初始拍摄到的内容、图像清晰度等信息确定,具体的确定方式不限定。采集原始图像以及处理原始图像的过程可以协同电子设备100的对焦马达、图像传感器、中央处理器(centralprocessing unit,CPU)等器件共同执行。
参考图2B,图2B示例性示出了电子设备100启动摄像头并获取到包含条码的第一图像后,所显示的一种扫码界面220。
示例性地,参考图3A和图3B,其分别示出了电子设备100的采集的第一图像的两种示例。
在图3A的第一图像中,二维码的背景区域为白色,白色背景区域比二维码稍宽,因而二维码能够完全显示在白色背景之上,白色背景之外为其他颜色的周边区域。
在图3B和图3C的第一图像中,二维码的背景区域为白色,并且白色背景区域远远宽于二维码,相当于二维码具有较大的白色背景,白色背景之外没有其他颜色的周边区域,或者,白色背景之外其他颜色的周边区域占比较小。图3B与图3C的不同之处在于,图3B中的二维码为正方形,图3C中的二维码为圆形。
S103,电子设备100判断是否处于大角度拍摄条码的场景。
由于用户和条码之间距离较远、条码周围人较多、或用户手持电子设备100的角度较偏(如电子设备100以斜视、仰视的角度拍摄条码)等原因,电子设备100启动扫码功能后,可能会出现大角度拍摄条码的场景。
电子设备大角度扫描条码的场景是指,电子设备用于扫描条码的摄像头的拍摄方向,和,条码所在平面的垂直方向之间具有一定的角度。在一些实施方式中,可以认为两个方向之间的角度需要大于某个阈值,电子设备才处于大角度扫描条码的场景。该角度阈值可以由电子设备100的设备厂商按需设置并预置在电子设备中,当然也可以由用户自主设置,这里不做限定。示例性地,该角度阈值例如可以设置为30度或其他角度。
在本申请实施例中,电子设备用于扫描条码的摄像头的拍摄方向,和,条码所在平面的垂直方向之间的角度,可以被称为第一角度。对应的角度阈值可以被称为第一值。
示例性地,参考图4,图4示例性示出了电子设备启动摄像头扫码时,与条码之间呈现的角度。如图4所示,二维码所在平面为x轴-y轴组成的平面,二维码所在平面的垂直方向为z轴方向。电子设备从二维码右侧往二维码的方向拍摄,该拍摄方向和z轴方向之间所呈现的角度为本申请实施例所称的拍摄角度,图4所示的拍摄角度大约为60度。如图4所示,由于电子设备以一定的拍摄角度拍摄二维码,因而电子设备获取到的二维码发生了形变。
电子设备100可通过以下方式来判断当前是否处于大角度拍摄条码的场景:
由于在大角度拍摄条码的情况下,条码会发生形变,因而电子设备100可以通过识别摄像头获取到的第一图像中条码所在区域,判断该区域中的条码是否发生形变或畸变,如果发生形变则可认定当前电子设备处于大角度拍摄条码的场景。电子设备100可以通过图片分析算法来识别第一图像中条码的形状。
在一些实施方式中,电子设备100可以在第一图像中的条码发生形变或畸变的程度大于一定程度时,才会认定当前处于大角度拍摄条码的场景。这里,形变程度的阈值可以被称为第二值。
示例性地,如果电子设备100识别到拍摄到的第一图像中包含有平行四边形、长方形或梯形的二维码,则可以认为当前由于拍摄角度,使得拍摄到的真实空间中的正方形二维码发生形变而变成了平行四边形、长方形或梯形。此时,可以认为电子设备100处于大角度拍摄条码的场景。
在其他一些实施方式中,电子设备100识别到二维码发生形变后,还需要检测第一图像中长方形或平行四边形所属的正面四边形的长宽比,只有在该长宽比大于一定阈值后,认为拍摄角度达到了一定值,进而才认定当前处于大角度拍摄条码的场景。长宽比的阈值可以按需设置,例如可以设定为1.14或其他值,这里不做限定。参考图5,图5示例性示出了电子设备100识别到的第一图像中形变而来的二维码所在的平行四边形,还示出了该平行四边形所属的正面四边形,其长宽比大于了1.14。
再示例性地,如果电子设备100识别到拍摄到的第一图像中包含有椭圆形的二维码,则可以认为当前由于拍摄角度,使得拍摄到的真实空间中的圆形二维码发生形变而变成了椭圆形。此时,可以认为电子设备100处于大角度拍摄条码的场景。
在其他一些实施方式中,电子设备100识别到二维码发生形变后,还需要检测第一图像中椭圆形所属的正面四边形的长宽比之比,只有在该比值大于一定阈值后,认为拍摄角度达到了一定值,进而才认定当前处于大角度拍摄条码的场景。长宽比的阈值可以按需设置,这里不做限定。
在一些实施方式中,电子设备100可以利用人工智能(artificial intelligence,AI)模型来识别第一图像中的条码的形状,以及,识别条码的形变程度。
如果S103的判断结果为否,则说明电子设备100当前的拍摄角度合适,则电子设备100可以容易地从第一图像中快速识别到条码表示的信息,进而根据该信息执行后续的操作。
如果S103的判断结果为是,那么由于条码的形变,电子设备100可能不能够从第一图像中直接地获取到清晰、正面的条码图像,也就不能完整地识别到条码所表示的信息。基于此,在本申请实施例中,如果S103的判断结果为否,则执行后续步骤S104-S106,以消除条码形变带来的影响,使得电子设备100完整、快速地识别条码所表示的信息。
S104,如果S103的判断结果为是,则电子设备100对第一图像进行处理,识别到第一图像中条码所在的区域。
在本申请实施例中,电子设备100处理第一图像,以识别到条码所在区域的过程,可包括图6示例性示出的几个步骤。如图6所示,该过程由电子设备100执行,具体可包括如下步骤:
S1041,对第一图像做二值化处理,得到第一图像的二值化图像。
具体实现中,电子设备100首先将第一图像做灰度处理,然后对灰度处理的第一图像做二值化处理,得到第一图像的二值化图像。第一图像的二值化图像仍然能够反映图像的整体和局部特征。
二值化(thresholding)是图像分割的一种最方法。二值化可以把灰度图像转换成二值图像。灰度图像中所有灰度大于或等于阈值的像素可以被判定为属于特定物体,把大于或等于该灰度阈值的像素灰度设为灰度极大值(如255);灰度图像中所有灰度小于阈值的像素表示背景物体以外的区域,把小于阈值的像素灰度设为灰度极小值(如0)。这样就完成了图像的二值化,二值化图像可以呈现出明显的黑白效果,物体和背景能够明显分割开来。二值化有利于在对图像做进一步处理时,不再涉及像素的多级值,使处理变得简单,而且数据的处理和压缩量小。
本申请实施例所使用的二值化方法可包括但不限于:双峰法、P参数法、迭代法或OTSU法等。
参考图3A-图3C,其分别示出了不同的第一图像分别的二值化图像。
可选步骤S1042,对二值化图像做预处理。
预处理可包括以下任意一项或多项:膨胀、腐蚀。
具体的,电子设备100可以先对二值化图像做膨胀处理,然后对其做腐蚀处理。
对二值化图像作腐蚀处理时,如果结构元素中的所有黑色点与它对应的大图像素点完全相同,该点为黑色,否则为白色。对二值化图像做膨胀处理后,可以扩大二维码所在区域的白色面积,简化内部信息。
对二值化图像作图像膨胀处理时,如果结构元素中只要有一个及以上黑色点与它对应的大图像素点相同,该点为黑色,否则为白色。也就是说,如果结构元素中的所有黑色点与它对应的大图像素点没有一个相同,该点为白色,否则为黑色。对膨胀后的二值化图像做腐蚀处理,可以将二维码轮廓边缘在膨胀过程中新产生的白色像素消除,以得到清晰的轮廓。
上述结构元素可以是3*3的卷积核。
通过预处理,可以将二值化图像中相同灰度值的小像素块连接在一起,扩大白色部分,缩小黑色部分,能够减少噪声对图像的影响。
S1042为可选步骤,即使不执行S1042,也不影响后续步骤的执行以及整体方案的效果。
S1043,在二值化图像中,选择面积最大的轮廓。
图像通常可包含高频分量和低频分量。高频分量,指的是图像强度(亮度/灰度)变化剧烈,即像素突变的地方,也就是我们常说的边缘(轮廓);低频分量,指的是图像强度(亮度/灰度)变换平缓的地方,也就是大片色块的地方。
以包含条码的图像来说,高频分量可以认为是第一图像中的重要特征所在的轮廓,其中面积最大的轮廓可以认为是条码在第一图像中的轮廓。因而,在本申请实施例中,电子设备100可以识别二值化图像中的高频分量,找出一个或多个候选轮廓,再从候选轮廓中找出面积最大的轮廓。
电子设备100可以使用边缘和轮廓特征提取算法来提取二值化图像中的候选轮廓,该算法可包括但不限于:Sobel算子、Isotropic Sobel算子、Roberts算子、Prewitt算子等等,本申请对此不限定。
参考图3A,电子设备100可以从二值图像中,提取二维码所在的白色背景区域和黑色背景区域的交界线所构成的轮廓。
参考图3B和图3C,电子设备100可以从二值图像中,提取二维码所在的白色背景区域的边界所构成的轮廓。
S1044,判断该面积最大的轮廓围成的区域,在第一图像中的面积占比是否大于或等于阈值。
这里的面积阈值可以按照实际需求设置,本申请实施例对此不限定。示例性地,该面积阈值可以设置为90%、95%等等。
S1044的判断结果为否,则执行S1045-S1046;S1044的判断结果为是,则执行S1047。
S1045,使用直线检测算法,检测第一图像中该轮廓所在区域的直线,以识别第一图像中条码所在区域的边界。
如果第一图像中面积最大的轮廓围成的区域的面积占比小于阈值,则说明第一图像的条码周围不仅存在白色背景区域,还存在较多的其他颜色的背景区域。
在这种情况下,如果第一图像中白色背景区域是由直线围合的区域(即白色背景区域和其他颜色背景区域的交界线包括直线),那么通过直线检测算法扫描第一图像中面积最大的轮廓,就能够检测到该轮廓中包含的直线,也即白色背景区域的边界所在的直线(即白色背景区域和其他颜色背景区域的交界线包含的直线)。具体实现中,电子设备100先使用直线检测算法扫描第一图像中面积最大的轮廓,得到多条直线,然后对这多条直线进行分类、合并及选择,最终选择出白色背景区域的边界所在的直线。然后,电子设备100就可以将选择的直线段围合的区域确定为第一图像中条码所在区域的边界。
其中,对多条直线进行分类、合并及选择的策略可以是:首先根据直线的延展方向将多条直线分为水平、垂直的直线,根据直线中心点与面积最大轮廓所围合区域的中心点之间的方位,将多条直线分为上下左右四个方位的直线;然后针对同一延展方向(如均是水平方向)、同一方位(如均是上方)的直线进行合并,合并条件可以考虑两两直线的斜率差(如斜率差小于一定值)、两两直线中点与点的距离、点与线的距离等,如果两条直线的距离相近则可以合并为一条长的直线;最终合并得到的多条直线就是第一图像中白色背景区域的边界所在的直线。
一种具体情况中,如果第一图像中条码所在的白色背景区域为平行四边形、长方形或梯形,电子设备100通过直线检测算法就可以识别到该平行四边形、长方形或梯形的边界。当然,在其他实施方式中,如果第一图像中条码所在的白色背景区域为其他直线线条组成的形状,电子设备100也可以识别到其他形状。
直线检测算法可包括但不限于:Hough_line直线检测算法、LSD直线检测算法、FLD直线检测算法、EDlines直线检测算法等等。
参考图3A,图3A中示出的第一图像中最大轮廓围成的区域的面积占比小于阈值,因而电子设备100可使用直线检测算法来识别条码所在区域的边界。如图3A所示,电子设备100可以通过直线检测算法识别到该轮廓区域中的直线,然后选择其中的部分或全部直线,基于其拟合得到条码所在区域的边界。
可见,S1045确定的条码所在区域的边界大于条码的实际边界,这样可以保证后续电子设备100可以完整地读取到条码所表示的信息,避免信息丢失。
S1046,确定条码所在区域的边界的角点。
对于使用直线检测算法检测到的第一图像中条码所在区域的边界,相邻边界的交点,就是角点。
由于条码所在区域的边界所围成区域的形状有多种,该区域的角点也可包括多种情况。如果该区域为四边形,则电子设备100可确定四个角点:左上角角点、左下角角点、右上角角点、右下角角点。如果该区域为五边形,则电子设备100可确定五个角点,以此类推。
S1047,使用扫描线算法扫描第一图像中的该轮廓,识别第一图像中条码所在区域的边界。
如果第一图像中面积最大的轮廓围成的区域的面积占比大于或等于阈值,则说明第一图像的条码周围存在较大面积的白色背景区域。
在这种情况下,通过扫描线算法扫描第一图像中面积最大轮廓所在的区域,具体可以从左往右扫描以及从上往下扫描,或者以相反方向扫描,找到该轮廓区域中上侧和左侧最先出现黑色像素值的行、列,以及,下侧和右侧最晚出现黑色像素值的行、列,该两行及两列围合区域的四边边界就是条码所在区域的边界。
一种具体情况中,如果第一图像中条码呈现为平行四边形、长方形或梯形,电子设备100通过直线检测算法就可以准确识别到该平行四边形、长方形或梯形的边界。
参考图3B和图3C,图3B和图3C中示出的第一图像中最大轮廓围成的区域的面积占比大于阈值,因而电子设备100可使用扫描线算法来识别二维码所在区域的边界。如图3B和图3C所示,电子设备100可以通过扫描线算法识别到轮廓区域中出现黑色像素值的边界。
相比于直接检测条码的边缘,会由于条码边缘并非连续围合而出现识别不准而丢失信息的缺陷,S1047中使用扫描线算法,能够识别到大于条码实际边界的条码所在区域。
上述步骤S1045和S1047均能够精准地在第一图像中定位到条码所在的区域,提高条码在得到的图像中的占比,这样可以保证后续电子设备100可以完整地读取到条码所表示的信息,避免信息丢失,还能够更迅速地识别到条码所表示的信息,提高扫码效率。
综合前几个步骤可知,S1043中确定的面积最大的轮廓仅是大概的条码所在区域的轮廓,并不能完全精准地反映条码所在的区域,因而后续根据轮廓面积大小还需选择S1045或S1047来精准地识别条码所在区域的边界。根据轮廓面积的大小不同,选择不同的方法来识别条码所在区域的边界,这样可以对不同情况的条码做针对性处理,在保障条码信息不丢失的情况下,加快扫码效率。
在本申请实施例中,使用S1047中的扫描线算法识别到的第一图像中条码所在的区域,可以被称为第一区域;使用S1045中的直线检测算法识别到的第一图像中条码所在的区域,可以被称为第二区域。
可选S105,电子设备100针对第一图像中条码所在的区域,做角度矫正,得到矫正后的第二图像。
如果电子设备100执行了上述步骤S1045-S1046,即使用直线检测算法检测到第一图像中条码所在区域的边界,并识别到该边界的角点,则可以执行S105。当然,即使电子设备100执行了上述S1045-S1046,也可以不执行S105,不对条码区域进行矫正也不影响后续步骤的执行,仍然可以从精准定位的条码区域中识别到条码所表示的信息。
如果电子设备100执行了上述步骤S1047,则电子设备100可以不执行S105。
具体执行S105时,电子设备100可以利用识别到的角点,将该角点按照一定的条件映射到某个平面上,以对识别到的第一图像中条码所在区域做角度矫正。
具体的,电子设备100可以将第一图像中条码所在的区域提取出来,并利用透视变换(perspective transformation)算法、仿射变换算法等对该区域做角度矫正,将该区域矫正为按照条码所在平面的垂直方向或者接近该垂直方向拍摄的形式,从而得到校正后的第二图像。其中,透视变换指利用透视中心、像点、目标点三点共线的条件,按透视旋转定律使承影面(透视面)绕迹线(透视轴)旋转某一角度,破坏原有的投影光线束,仍能保持承影面上投影几何图形不变的变换。
图7示例性示出了矫正角度的一种方式。如图7所示,电子设备100可通过如下几个步骤矫正图像:
(1)提取条码区域。
电子设备100可以提取条码的图像区域,同时记录下条码的中心点坐标(x1,y1)和屏幕的中心坐标O(x0,y0)。
(2)调整条码位置。
电子设备100根据条码的中心点坐标将包括条码的图像区域的位置调整至以屏幕中心坐标为原点的坐标系的中心。这样,条码的中心点坐标由(x1,y1)变换为(x0,y0)。同时,电子设备100还可以对条码图像进行适度的缩放和裁剪。
(3)校正条码。
电子设备100可以通过图像变换算法(例如,仿射变换算法,透视变换算法),对条码进行转换映射,得到正视的条码图像。
参考图3A,其示出了电子设备100针对第一图像校正后得到的第二图像。
S106,电子设备100识别条码所表示的信息。
如果电子设备100未执行S105,则可以针对使用扫描线算法或直线检测算法识别到的二维码所在区域,识别该区域中的条码所表示的信息。
如果电子设备100执行了S105,则可以针对矫正后的第二图像,识别第二图像中的条码所表示的信息。
电子设备100可以识别图像中的条码,得到对应的比特流,通过该比特流得到该条码对应的条码信息。条码所表示的信息可包括但不限于:文字、数值、图片、网页链接、支付信息(如支付金额、收款方)、联系人链接、公众号链接等等。
S107,电子设备100根据该条码所表示的信息执行对应的第一操作。
电子设备100可以判断条码信息的类型,执行对应的操作。若该条码信息为文本、图片等信息,第一操作可以为电子设备100显示该文本、图片。若该条码信息为网页链接,第一操作可以为显示该网页链接对应的页面。若该条码信息为付款信息,第一操作可以为显示付款界面,并在付款界面中显示付款金额。若该条码信息为联系人链接,第一操作可以为显示该联系人链接对应的添加好友的界面。若该条码信息为小程序链接,第一操作可以为打开小程序。
示例性地,参考图2C,图2C示例性示出了电子设备100识别到条码信息后,所显示的用户界面230。如图2C所示,用户界面230中显示有电子设备100识别到的文本“荣耀”。
实施图1所示的条码图像的获取方法,能够在大角度扫描条码的场景下,利用边缘检测算法,准确地检测到摄像头所获取的包含条码的图像中,条码所在区域。在一些实施方式中,还可以将对该区域进行角度矫正,得到矫正后正视的条码图像。这样,电子设备可以准确地识别到条码所在的区域,可以避免由于条码边缘识别不准确而造成条码信息丢失的问题,准确地获取到易识别的条码图像,以提高解码成功率。并且,本申请实施例所使用的边缘检测算法效率高,可以在保证解码成功率的情况下,降低解码时延,提高解码效率,提升扫码类应用的扫码速度,给用户更好的使用体验。
下面介绍本申请实施例提供的电子设备。
图8示出了本申请实施例提供的电子设备100的硬件结构示意图。
电子设备100可以包括处理器101,存储器102,无线通信模块103,移动通信模块104,天线103A,天线104A,电源开关105,传感器模块106,对焦马达107,摄像头108,显示屏109等。其中,传感器模块106可以包括陀螺仪传感器106A,加速度传感器106B,环境光传感器106C,图像传感器106D,距离传感器106E等。其中,无线通信模块103可以包括WLAN通信模块,蓝牙通信模块等。上述多个部分可以通过总线传输数据。
处理器101可以包括一个或多个处理单元,例如:处理器101可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
存储器102可以用于存储计算机可执行程序代码,可执行程序代码可以包括指令。处理器101通过运行存储在存储器102的指令,从而执行电子设备100的各种功能应用以及数据处理。存储器102可以包括存储程序区和存储数据区。具体实现中,存储器102可以包括高速随机存取的存储器,并且也可包括非易失性存储器,例如一个或多个磁盘存储设备、闪存设备或其他非易失性固态存储设备。
电子设备100的无线通信功能可以通过天线103A,天线104A,移动通信模块104,无线通信模块103,调制解调处理器以及基带处理器等实现。
天线103A和天线104A可以用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。
移动通信模块104可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块104可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块104可以由天线104A接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块104还可以对经调制解调处理器调制后的信号放大,经天线104A转为电磁波辐射出去。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备输出声音信号,或通过显示屏109显示图像或视频。
无线通信模块103可以提供应用在电子设备100上的包括无线局域网(wirelesslocal area networks,WLAN),蓝牙(bluetooth,BT),全球导航卫星系统(globalnavigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块103可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块103经由天线103A接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器101。无线通信模块103还可以从处理器101接收待发送的信号,对其进行调频,放大,经天线103A转为电磁波辐射出去。
电源开关105可用于控制电源向电子设备100的供电。
陀螺仪传感器106A可以用于确定电子设备100的运动姿态。在一些实施例中,可以通过陀螺仪传感器106A确定电子设备100围绕三个轴(即,x,y和z轴)的角速度。陀螺仪传感器106A可以用于拍摄防抖。示例性的,当按下快门,陀螺仪传感器106A检测电子设备100抖动的角度,根据角度计算出镜头模组需要补偿的距离,让镜头通过反向运动抵消电子设备100的抖动,实现防抖。陀螺仪传感器106A还可以用于导航,体感游戏场景。
加速度传感器106B可检测电子设备100在各个方向上(一般为三轴)加速度的大小。当电子设备100静止时可检测出重力的大小及方向。还可以用于识别电子设备姿态,例如,加速度传感器106B可以应用于横竖屏切换,计步器等应用。
环境光传感器106C用于感知环境光亮度。电子设备100可以根据感知的环境光亮度自适应调节显示屏109的亮度。环境光传感器106C也可用于拍照时自动调节白平衡。
图像传感器106D,又称为感光元件,可以利用光电器件的光电转换功能将感光面上的光像转换为与光像成相应比例关系的电信号。图像传感器可以是电荷耦合器件(charge coupled device,CCD)传感器或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)传感器。
距离传感器106E可以用于测量距离。电子设备100可以通过红外或激光测量距离。在一些拍摄场景中,电子设备100可以利用距离传感器106E测距以实现快速对焦。
对焦马达107可用于快速对焦。电子设备100可以通过对焦马达107控制镜片的移动,实现自动对焦。
电子设备100可以通过ISP,摄像头108,视频编解码器,GPU,显示屏109以及应用处理器等实现拍摄功能。
ISP用于处理摄像头108反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点,亮度,肤色进行算法优化。ISP还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,ISP可以设置在摄像头108中。
摄像头108可用于捕获静态图像或视频。物体通过镜头生成光学图像投射到图像传感器。图像传感器可以把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP可以将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,电子设备100可以包括1个或N个摄像头193,N为大于1的正整数。
视频编解码器用于对数字图像压缩或解压缩。电子设备100可以支持一种或多种图像编解码器。这样,电子设备100代开或保存多种编码格式的图片或视频。
电子设备100可以通过GPU,显示屏109,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏109和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器101可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏109用于显示图像,视频等。显示屏109包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode的,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,电子设备100可以包括1个或N个显示屏109,N为大于1的正整数。
可以理解的是,本发明实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
在本申请实施例中,摄像头108、对焦马达107、处理器101中的AP、图像传感器106D等可协同用于获取包含条码的第一图像。
处理器101中的AP可用于判断电子设备100是否处于大角度拍摄条码的场景,还用于在电子设备100处于大角度拍摄条码的场景时,识别第一图像中条码所在区域,还可对该区域进行角度矫正,以得到校正后正视的条码图像。
显示屏109可用于显示上述本申请实施例提供的在电子设备100上实现的用户界面,例如图2A-图2C所示的用户界面。
电子设备100中各器件所执行的操作,具体可参考前文方法实施例的相关描述,这里不再详细展开。
图9是本发明实施例提供的电子设备100的模块框图。
模块框图示出了电子设备100的应用程序层、应用程序框架层、硬件抽象接口层、硬件抽象(hardware abstract layer,HAL)实现层、硬件驱动层以及硬件层的部分模块。
其中,应用程序层可以包括一系列应用程序包。应用程序包可以包括扫码应用301,相机,支付,短信息等应用程序。
应用程序框架层可以为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层可以包括一些预先定义的函数。例如,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。应用程序框架层还可以包括活动(activity)管理器。其中,activity管理器可以获取不同的activity对应的activity名。
电子设备100在接收到用于触发扫码的用户操作后,应用程序的扫码应用301可以启动扫码活动(activity),并通过应用程序框架层的摄像头函数接口(例如,configureStreams接口)将扫码应用的参数信息发送给硬件抽象层的条码场景控制单元302。应用程序框架层的摄像头函数接口可以通过指定的接口(例如,getTopActivity)从activity管理器获取activity对应的activity名(例如,com.saoma.CaptureActivity),并将获取到的activity名发送给条码场景控制单元302。其中,activity是负责与用户交互的程序组件,为用户提供了一个与电子设备100交互的窗口、按钮、图标等。用户可以通过activity窗口(按钮、图标等)与设备交互。
硬件抽象接口层可以包括多个库模块。其中,每个模块都为特定类型的硬件组件实现一组接口。当应用程序框架层请求访问设备硬件时,操作系统将为该硬件加载相应的库模块。
在一些应用场景中,硬件抽象接口层可以包括扫码接口(未示出)。其中,该扫码接口可以用于给扫码判断模块303传递扫码模式和扫码模式的状态信息等等。
硬件抽象实现层可以包括条码场景控制单元302、图像信号处理单元310、条码图像处理单元320和图像传感器模块307等等。
其中,条码场景控制单元302包括扫码判断模块303等等。
在本申请实施例中,扫码判断模块303还可以在确定电子设备100处于扫码场景时,进一步判断电子设备100是否处于大角度拍摄条码的场景。具体的判断方式可参考前文方法实施例的相关描述。扫码判断模块303在确定电子设备100处于大角度拍摄条码的场景后,可以发送指令给条码图像处理单元320,以使得条码图像处理单元320执行后续的操作。
图像信号处理单元310可以包括图像前端处理模块311、图像后端处理模块312。可选的,图像信号处理单元310还可以包括其他图像处理模块。
其中,图像前端处理模块311可以用于对图像的颜色进行校正、减少信号噪声、优化图像亮度、进行色彩空间转换等等。
图像传感器模块307可以获取一帧原始图像,并将获取的原始图像发送给图像信号处理单元310的图像前端处理模块311。
图像后端处理模块312可以用于进一步的优化前端处理模块输出的图像的质量,包括图像坏点去除、细节增强、HDR处理等。例如,图像后端处理模块312可以获取并优化图像前端处理模块311输出的图像。
其他图像处理模块可以用于优化图像质量,例如,美颜、背景虚化、运动探测、场景检测等。可选的,其他图像处理模块可以处理图像前端处理模块311输出的图像或者图像后端处理模块312输出的图像。
条码图像处理单元320可以包括:条码区域识别模块321、条码矫正模块322。
条码区域识别模块321可用于识别第一图像中条码所在的区域,还可能用于识别该区域中的角点,具体过程可参考图6以及前文方法实施例的相关描述。在一些实施方式中,条码区域识别模块321可以将通过扫描线算法识别到的二维码区域上传至扫码应用,由扫码应用识别该区域中的条码所表示的信息,并根据该信息调度电子设备100的相关器件以执行对应的操作。
条码矫正模块322可用于根据角点针对第一图像中条码所在的区域做角度矫正,得到矫正后的第二图像,具体实现可参考前文方法实施例的相关描述。
条码矫正模块322获取到矫正后的第二图像后,可以将第二图像上传至扫码应用,由扫码应用识别第二图像中的条码所表示的信息,并根据该信息调度电子设备100的相关器件以执行对应的操作。
硬件驱动层是硬件和软件之间的层。该硬件驱动层至少包括对焦马达驱动,图像传感器驱动,图像信号处理器驱动等等。电子设备可以通过驱动和硬件进行通信。
硬件层可以包括多种硬件设备。例如,镜头、对焦马达集成电路(integratedcircuit,IC)、图像传感器、图像信号处理器等等。其中,对焦马达IC可以移动镜头进行对焦。
可以理解的是,上述图9所示实施例并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的层级,或者组合某些层级,或者拆分某些层级,或者不同的层级布置。图示的层级可以以硬件,软件或软件和硬件的组合实现。
应理解,上述方法实施例中的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。结合本申请实施例所公开的方法步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
本申请还提供一种电子设备,该电子设备可以包括:存储器和处理器。其中,存储器可用于存储计算机程序;处理器可用于调用所述存储器中的计算机程序,以使得该电子设备执行上述任意一个实施例中电子设备100侧执行的方法。
本申请还提供了一种芯片系统,所述芯片系统包括至少一个处理器,用于实现上述任一个实施例中电子设备100侧所涉及的功能。
在一种可能的设计中,所述芯片系统还包括存储器,所述存储器用于保存程序指令和数据,存储器位于处理器之内或处理器之外。
该芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
可选地,该芯片系统中的处理器可以为一个或多个。该处理器可以通过硬件实现也可以通过软件实现。当通过硬件实现时,该处理器可以是逻辑电路、集成电路等。当通过软件实现时,该处理器可以是一个通用处理器,通过读取存储器中存储的软件代码来实现。
可选地,该芯片系统中的存储器也可以为一个或多个。该存储器可以与处理器集成在一起,也可以和处理器分离设置,本申请实施例并不限定。示例性地,存储器可以是非瞬时性处理器,例如只读存储器ROM,其可以与处理器集成在同一块芯片上,也可以分别设置在不同的芯片上,本申请实施例对存储器的类型,以及存储器与处理器的设置方式不作具体限定。
示例性地,该芯片系统可以是现场可编程门阵列(field programmable gatearray,FPGA),可以是专用集成芯片(application specific integrated circuit,ASIC),还可以是系统芯片(system on chip,SoC),还可以是中央处理器(central processorunit,CPU),还可以是网络处理器(network processor,NP),还可以是数字信号处理电路(digital signal processor,DSP),还可以是微控制器(micro controller unit,MCU),还可以是可编程控制器(programmable logic device,PLD)或其他集成芯片。
本申请还提供一种计算机程序产品,所述计算机程序产品包括:计算机程序(也可以称为代码,或指令),当所述计算机程序被运行时,使得计算机执行上述任一个实施例中电子设备100侧所执行的方法。
本申请还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序(也可以称为代码,或指令)。当所述计算机程序被运行时,使得计算机执行上述任一个实施例中电子设备100侧所执行的方法。
本申请的各实施方式可以任意进行组合,以实现不同的技术效果。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solidstate disk,SSD))等。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:ROM或随机存储记忆体RAM、磁碟或者光盘等各种可存储程序代码的介质。
总之,以上所述仅为本申请技术方案的实施例而已,并非用于限定本申请的保护范围。凡根据本申请的揭露,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (13)
1.一种条码图像的获取方法,其特征在于,所述方法应用于电子设备,所述方法包括:
接收到用于触发扫码的用户操作;
通过摄像头获取到包含条码的第一图像,所述摄像头的拍摄方向和所述条码所在平面的垂直方向之间成第一角度,所述第一角度大于0;
如果所述条码的白色背景区域在所述第一图像中的面积占比大于或等于阈值,则使用扫描线算法识别所述第一图像中所述条码所在的第一区域;
如果所述条码的白色背景区域在所述第一图像中的面积占比小于阈值,则使用直线检测算法识别所述第一图像中所述条码所在的第二区域。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
对所述第二区域做角度矫正,得到第二图像。
3.根据权利要求2所述的方法,其特征在于,对所述第二区域做角度矫正,得到第二图像,具体包括:
识别所述第二区域的角点,并利用所述角点来对所述第二区域做角度矫正,得到第二图像。
4.根据权利要求2或3所述的方法,其特征在于,对所述第二区域做角度矫正,得到第二图像,具体包括:
使用透视变换算法或仿射变换算法,对所述第二区域做角度矫正,得到第二图像。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述电子设备识别所述第一区域或所述第二区域之前,所述方法还包括:
对所述第一图像做二值化处理,得到所述第一图像的二值化图像;
确定所述二值化图像中面积最大的轮廓;
将所述轮廓在所述第一图像中围成的区域面积,确定为所述条码的白色背景区域在所述第一图像中的面积。
6.根据权利要求5所述的方法,其特征在于,
使用扫描线算法识别所述第一图像中所述条码所在的第一区域,具体包括:使用扫描线算法扫描所述轮廓在所述第一图像中围成的区域,确定上侧最先出现黑色像素值的行、下侧最晚出现黑色像素值的行、左侧最先出现黑色像素值的列、右侧最晚出现黑色像素值的列;将确定的行和列围成的区域,确定为所述第一区域;
或者,
使用直线检测算法识别所述第一图像中所述条码所在的第二区域,具体包括:使用直线检测算法检测所述轮廓在所述第一图像围成的区域中的直线,选择检测到的直线中的部分或全部直线;将选择的所述部分或全部直线围成的区域,确定为所述第二区域。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述第一角度大于第一值,所述第一值大于0。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述电子设备识别所述第一区域或所述第二区域之前,所述方法还包括:
识别到所述第一图像中的所述条码发生了形变。
9.根据权利要求8所述的方法,其特征在于,所述第一图像中的所述条码发生形变的程度大于第二值。
10.根据权利要求1-9任一项所述的方法,其特征在于,识别到所述第一区域或所述第二区域之后,所述方法还包括:
识别所述第一区域或所述第二区域中的条码所表示的信息;
根据所述信息执行对应的第一操作。
11.根据权利要求2-4任一项所述的方法,其特征在于,对所述第二区域做角度矫正,得到第二图像之后,所述方法还包括:
识别所述第二图像中的条码所表示的信息;
根据所述信息执行对应的第一操作。
12.一种电子设备,其特征在于,包括:一个或多个处理器、一个或多个存储器、一个或多个摄像头;其中,所述一个或多个摄像头、所述一个或多个存储器与所述一个或多个处理器耦合,所述一个或多个存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,当所述一个或多个处理器在执行所述计算机指令时,使得所述电子设备执行如权利要求1-11任一项所述的方法。
13.一种计算机可读存储介质,包括指令,其特征在于,当所述指令在电子设备上运行时,使得所述电子设备执行如权利要求1-11任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310217523.0A CN116225270A (zh) | 2023-02-27 | 2023-02-27 | 条码图像的获取方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310217523.0A CN116225270A (zh) | 2023-02-27 | 2023-02-27 | 条码图像的获取方法及相关装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116225270A true CN116225270A (zh) | 2023-06-06 |
Family
ID=86576613
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310217523.0A Pending CN116225270A (zh) | 2023-02-27 | 2023-02-27 | 条码图像的获取方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116225270A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110290882A1 (en) * | 2010-05-28 | 2011-12-01 | Microsoft Corporation | Qr code detection |
CN111311497A (zh) * | 2020-02-12 | 2020-06-19 | 广东工业大学 | 一种条形码图像角度校正方法和装置 |
CN111310507A (zh) * | 2020-01-20 | 2020-06-19 | 北京百度网讯科技有限公司 | 识别码的识别方法、装置及设备 |
CN114627459A (zh) * | 2020-12-14 | 2022-06-14 | 菜鸟智能物流控股有限公司 | Ocr识别方法、识别装置和识别系统 |
WO2022166619A1 (zh) * | 2021-02-07 | 2022-08-11 | 华为技术有限公司 | 二维码识别方法及相关装置 |
CN115713556A (zh) * | 2022-11-18 | 2023-02-24 | 研祥高科技控股集团有限公司 | 二维码定位方法、装置及计算机可读存储介质 |
-
2023
- 2023-02-27 CN CN202310217523.0A patent/CN116225270A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110290882A1 (en) * | 2010-05-28 | 2011-12-01 | Microsoft Corporation | Qr code detection |
CN111310507A (zh) * | 2020-01-20 | 2020-06-19 | 北京百度网讯科技有限公司 | 识别码的识别方法、装置及设备 |
CN111311497A (zh) * | 2020-02-12 | 2020-06-19 | 广东工业大学 | 一种条形码图像角度校正方法和装置 |
CN114627459A (zh) * | 2020-12-14 | 2022-06-14 | 菜鸟智能物流控股有限公司 | Ocr识别方法、识别装置和识别系统 |
WO2022166619A1 (zh) * | 2021-02-07 | 2022-08-11 | 华为技术有限公司 | 二维码识别方法及相关装置 |
CN115713556A (zh) * | 2022-11-18 | 2023-02-24 | 研祥高科技控股集团有限公司 | 二维码定位方法、装置及计算机可读存储介质 |
Non-Patent Citations (1)
Title |
---|
郭琳: "QRCode二维条码编译码及自动识别技术的研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》, pages 41 - 44 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107105130B (zh) | 电子设备及其操作方法 | |
JP7118244B2 (ja) | グラフィックコード認識方法及び装置、並びに、端末及びプログラム | |
US9600741B1 (en) | Enhanced image generation based on multiple images | |
CN112889266B (zh) | 显示器中包括相机模块的电子装置以及用于补偿相机模块周围的图像的方法 | |
US9451173B2 (en) | Electronic device and control method of the same | |
KR102126300B1 (ko) | 올-인-포커스 이미지를 생성하기 위한 방법 및 장치 | |
US9332167B1 (en) | Multi-directional camera module for an electronic device | |
CN113919382B (zh) | 一种扫码的方法及装置 | |
US9002061B2 (en) | Image processing device, image processing method and computer-readable medium | |
JP5231667B2 (ja) | 撮像装置、撮像装置における表示方法、撮像装置における画像処理方法、プログラムおよび記録媒体 | |
US10863077B2 (en) | Image photographing method, apparatus, and terminal | |
JP2011097251A (ja) | 画像処理装置、画像処理方法、画像処理プログラム、画像処理プログラムを記録した記録媒体 | |
US9495762B2 (en) | Detecting and compensating for motion between a flash and a no-flash image | |
CN110677621B (zh) | 摄像头调用方法、装置、存储介质及电子设备 | |
CN106599758A (zh) | 一种画质处理方法及终端 | |
CN115004685A (zh) | 电子装置和用于在电子装置处显示图像的方法 | |
CN111787230A (zh) | 图像显示方法、装置和电子设备 | |
CN113051950A (zh) | 一种多条码识别方法以及相关设备 | |
CN107395983B (zh) | 一种图像处理方法、移动终端及计算机可读存储介质 | |
CN116341586B (zh) | 扫码方法、电子设备及存储介质 | |
US11917295B2 (en) | Method for correcting shaking at high magnification and electronic device therefor | |
CN116225270A (zh) | 条码图像的获取方法及相关装置 | |
CN116301459B (zh) | 一种扫码方法及相关装置 | |
CN116167395B (zh) | 一种扫码方法及电子设备 | |
EP3920132A1 (en) | Electronic device for generating hdr image and operating method therefor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |