CN116934774B - 一种快速及高精度的全景图像裁剪方法 - Google Patents
一种快速及高精度的全景图像裁剪方法 Download PDFInfo
- Publication number
- CN116934774B CN116934774B CN202310800725.8A CN202310800725A CN116934774B CN 116934774 B CN116934774 B CN 116934774B CN 202310800725 A CN202310800725 A CN 202310800725A CN 116934774 B CN116934774 B CN 116934774B
- Authority
- CN
- China
- Prior art keywords
- panoramic image
- line segment
- image
- rect
- column
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 63
- 239000011159 matrix material Substances 0.000 claims description 69
- 238000005070 sampling Methods 0.000 claims description 23
- 238000012545 processing Methods 0.000 claims description 11
- 238000005520 cutting process Methods 0.000 claims description 10
- 238000004364 calculation method Methods 0.000 claims description 8
- 238000010606 normalization Methods 0.000 claims description 8
- NAWXUBYGYWOOIX-SFHVURJKSA-N (2s)-2-[[4-[2-(2,4-diaminoquinazolin-6-yl)ethyl]benzoyl]amino]-4-methylidenepentanedioic acid Chemical compound C1=CC2=NC(N)=NC(N)=C2C=C1CCC1=CC=C(C(=O)N[C@@H](CC(=C)C(O)=O)C(O)=O)C=C1 NAWXUBYGYWOOIX-SFHVURJKSA-N 0.000 claims description 2
- 230000003190 augmentative effect Effects 0.000 abstract description 3
- 238000005516 engineering process Methods 0.000 description 6
- 238000013135 deep learning Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 238000003860 storage Methods 0.000 description 3
- 238000012549 training Methods 0.000 description 3
- 230000007547 defect Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000001788 irregular Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000004931 aggregating effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005286 illumination Methods 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 230000011514 reflex Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/11—Region-based segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20112—Image segmentation details
- G06T2207/20132—Image cropping
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明公开一种快速及高精度的全景图像裁剪方法与系统,对于给定的全景图像,首先计算全景图像对应的二值图像(Mask);其次,计算二值图像包含的最大内接矩形;然后,根据最大内接矩形计算全景图像的感兴趣区域;最后,提取感兴趣域内的图像,即可获得完整图像信息。本发明公开的“一种快速及高精度的全景图像裁剪方法与系统”可以被应用于虚拟现实、增强现实、三维重建、道路资产数字化、数字孪生和元宇宙领域。
Description
技术领域
本发明涉及图像拼接和全景图像编辑技术,具体涉及一种快速及高精度的全景图像裁剪方法。
背景技术
随着图像采集设备(手持单反相机、手机和无人机等)的广泛使用,人们采集图像数据变得非常容易,但是这些单幅图像数据无法展示完整的场景信息,因此,迫切需要一种全景图像拼接技术,能够从多幅低分辨率的图像中生成高分辨率的全景图像。概括地说,图像拼接(Image Stitching)是一种从多幅低分辨率图像生成一幅高分辨全景图像的技术,具有广泛的应用价值,例如:基于全景图像的导航、基于全景图像的三维重建、室内场景的布局估计、机器人导航、文化遗产的数字化保护、场景信息的展示、影视场景中的内容制作、虚拟现实和增强现实等。
然而,受摄像机运动和光照变化等因素的影响,导致所采集的图像中的内容的中心点不在同一条直线上,进而导致使用图像拼接方法获得的全景图像在边缘区域存在大量的空白区域,这些空白区域严重影响了全景图像的观赏性以及在实践中的应用效果。例如,如果将带有空白区域的全景图像应用于三维重建中,则计算出来的三维模型存在大量的空洞。因此,为了提高全景图像的质量以及在实践中的应用效果,需要裁剪掉全景图像边缘的空白区域。
概括地说,裁剪全景图像边缘的空白区域所面临的主要困难如下:(1)目前没有任何一种方法能够自动地裁剪掉全景图像边缘的空白区域;现有的全景图裁剪方法均需要手动标记待裁剪的空白区域。(2)现有的全景图像裁剪方法非常耗时,无法满足基于全景图像的高层次计算机视觉应用系统的时间效率需求。上述问题严重阻碍了全景图像裁剪与修复技术的发展以及基于全景图像的应用。因此,人们迫切希望设计一种快速及高精度的全景图像裁剪方法和系统,以便能够自动地裁剪掉全景图像边缘的空白区域,进而获得整齐的全景图像。
相关的研究论文有《Unsupervised Deep Image Stitching:ReconstructingStitched Features to Images》,提出一种基于深度学习技术的全景图像矩形化方法,用于裁剪全景图像边缘的空白区域。但是,在实践应用中,需要准备大量的全景图像数据用于训练深度神经网络模型,此过程非常耗时,无法满足应用系统的时间效率需求。
此外,现有的基于深度学习技术的全景图像裁剪方法距离实际应用还有很大的距离,主要不足体现在以下几个方面:(1)现有的全景图像裁剪算法的时间效率较低,无法满足应用程序的实时性需求;(2)现有的基于深度学习技术的全景图像裁剪算法的运行环境严重依赖于GPU(Graphics Process Units),算法的普适性受限于硬件设备,且非常消耗GPU的内存空间,无法运行在一些低端的GPU硬件设备上;(3)现有的基于深度学习技术的全景图像裁剪算法的结果严重依赖于训练过程中使用的图像数据,如果训练数据中存在与测试图像类似的场景,则算法输出精确的结果,否则无法裁剪全景图像边缘的空白区域。
相关专利有:(1)CN106886979B公开一种图像拼接装置及图像拼接方法,采用的是基于特征匹配和全局单应矩阵方法实现图像拼接,但是没有提供裁剪全景图像边缘空白区域的功能。(2)CN110211076B公开一种图像拼接方法、图像拼接设备和可读存储介质,其目的实现自动化的图像拼接和存储,没有提供全景图像裁剪功能。(3)CN_105913065_B公开一种图像目标区域提取的方法及系统,寻找目标区域的实现过程是判断二值图像与过程图像是否相等,如果一直不相等则将二值图像外延以更改二值图像,将其赋值给结果图像,将结果图像中的连通域扩展为外接矩形,并将外接矩形内的像素点值全赋值为1,然后判断此时的结果图像与二值图像是否相等,若不相等重复上述步骤直到相等为止,所得的结果图像即为目标区域。(4)CN_111767920_A公开一种感兴趣区域的提取方法、装置、电子设备及存储介质,主要是针对视频帧图像,通过水岭算法将所应对的二值图像分割为前景图像和后景图像,再对前后景图像进行膨胀处理,对膨胀处理后的图像标记图像中的前景物体,通过遍历前景图像中的轮廓并绘制每个轮廓的最小矩形来构成前景目标标记矩阵,在对其进行归一化处理获得感兴趣区域。(5)专利CN_112634286_A公开一种图像的裁剪方法及装置,主要通过对图像所对应的二值图像进行行遍历,记录下每行像素点连续为1的左右坐标即获得宽度,并记录下像素点连续为1块区域的高度,通过宽度和高度相乘得到矩形的面积,在遍历的过程中给不断进行矩形面积比较,得到最终的最大面积的矩形,即为最大内接矩阵。(6)专利CN_112991375_A将任意形状图像区域重塑为N个矩形区域的方法及其系统,可将图像切割成多个矩形区域;计算出感兴趣区域的最小外接矩形,对其行遍历将连续为1的块构成不同高度的柱状并记录每个柱状的高度值得到高度矩阵;对高度矩阵进行遍历计算对应位置的面积得到面积矩阵;对面积矩阵遍历找到最大值,然后采用流沙式填充逐步向内聚合最大面积矩形外、最小外接矩形内的其他标记为1的像素点找到矩形,然后按照一定的方式对这个矩形分割成N个矩形。(7)专利CN_113936303_B公开一种手部图像最大内接矩形确定方法及图像识别方法,主要是针对于手部图像,基于手掌区域的宽度和高度计算搜索夹角范围,再根据手掌中心点将手部二值化图像分为四个区间,并设定两条基准线,旋转第一基准线,在这四个区间中寻找离这两条基准线距离最近的边缘点,寻找由这四个边缘点组成的最大面积矩形,即为手部图像的最大内接矩形。
发明内容
发明目的:本发明旨在解决现有全景图像编辑技术的缺陷,提供一种快速且高精度的全景图像裁剪方法,该方法能够自动地计算出全景图像的最大内接矩阵,以改善图像在拼接完成后呈现不规则形状的视觉效果,进而输出规整的全景图像,以便给用户提供更加自然、真实的全景图像体验。
技术方案:本发明提供的一种快速及高精度的全景图像裁剪方法与系统,包括以下步骤:
步骤S1、输入全景图像Ip,计算全景图像对应的二值图像Ib;
步骤S2、根据全景图像Ip的二值图像Ib,计算全景图像Ip的最大内接矩形Inner(Ip);
步骤S2.1、循环迭代二值图像Ib每列的元素,找到每列的最长连续非零线段其中,i表示全景图像Ib的列号,l表示连续非零线段;
步骤S2.2、对二值图像Ib进行等间隔采样,循环遍历每个采样点,并根据当前遍历的采样点计算二值图像Ib的起始列号Seedc;
步骤S2.3、根据步骤S2.2中的起始列号Seedc遍历二值图像Ib,即可获得最大内接矩形Inner(Ip);
步骤S3、根据全景图像的最大内接矩形Inner(Ip),计算全景图像的感兴趣区域ROI(Ip),其中,ROI是指感兴趣区域;
步骤S3.1、根据步骤S2得到全景图像的最大内接矩形Inner(Ip),可知最大内接矩形inner(Ip)的左上角在全景图像Ip上的位置RopLeft(ix,iy)和右下角在全景图像Ip上的位置BorromRight(jx,jy);其中,ix和iy分别表示最大内接矩形inner(Ip)的左上角在全景图像Ip上的行号和列号;jx和jy分别表示最大内接矩形inner(Ip)的右下角在全景图像Ip上的行号和列号;
步骤S3.2、根据最大内接矩形inner(Ip)的左上角在全景图像Ip上的位置TopLeft(ix,iy)和右下角在全景图像Ip上的位置BottomRight(jx,jy),可以获得全景图像的感兴趣区域ROI(Ip)的起始位置Start(rx,ry)以及宽度w长度h;其中,rx表示全景图像的感兴趣区域ROI(Ip)的X轴坐标,ry表示全景图像的感兴趣区域ROI(Ip)的Y轴坐标;
步骤S4、提取全景图像Ip的感兴趣区域ROI(Ip)内的像素信息,即可获得新的全景图像I′p;
步骤S5、输出新的全景图像I′p,算法计算过程结束。
进一步地,所述步骤S1中输入的全景图像既可以是手持相机采集的图像所对应的全景图像,又可以是无人机设备采集的图像对应的全景图像,且对图像的质量和分辨率没有要求;根据全景图像Ip来计算对应的二值图像Ib的具体步骤为:
步骤S1.1、创建一个与全景图像Ip具有相同高度和宽度的矩形区域Rect(Ip),然后将该矩形区域填充为白色;
步骤S1.2、对全景图像Ip和矩形区域像素Rect(Ip)进行“位与”运算,即可获得二值图像Ib。
进一步地,所述步骤S2.1中寻找每列的最长连续非零线段时,用和/>分别表示当前第i列正在处理的连续非零线段和已经找到的最长连续非零线段,具体方法为:
步骤(1)、对于二值图像Ib对应掩码矩阵mask的每列元素,首先检查第一个元素是否为空,如果不为空,则将设置为从第一个元素开始的长度为1的线段;
步骤(2)、从第二个元素开始遍历:a、获取当前元素和上一个元素的值,判断它们是否为空;b、如果上一个元素为空,但当前元素不为空,说明当前元素是一条新的线段的起点,将设置为从当前元素开始的长度为1的线段;c、如果上一个元素和当前元素都不为空,说明当前元素是上一段线段的延续,将/>的结束位置设置为当前元素的下一行;d、如果上一个元素不为空,但当前元素为空,说明当前线段结束了,将/>和/>进行比较,将更长的线段赋值给/>然后将/>重置为默认值0;其中,上述过程中的l均表示连续非零线段;
至此,上述遍历过程表达为公式(1):
其中,Ci(start,end)表示为当前第i列正在处理的线段,start和end表示当前线段开始和结束的位置,x表示当前遍历的第i列第x个元素(x>1),colsi(x)表示mask矩阵的第i列的第x个元素的值;
步骤(3)、循环结束后,判断最后一个元素是否为空,如果不为空,对和进行比较,将更长的线段赋值给/>
步骤(4)、得到了当前第i列的最长连续非零线段并将当前列的最长非零连续线段/>存储到集合lines中,即当前第i列的最长非零连续线段可表示为linesi,lines记录了最长连续非零线段的起始和结束位置,lines表示所有列中的最长连续线段集合;
对于mask矩阵的每一列元素都进行上述步骤(1)至步骤(4)处理,得到所有列的最长连续非零线段集合lines。
进一步地,所述步骤S2.2对二值图像Ib进行等间隔采样时,
其采样点数量num_sample计算公式(2)为:
num_sample=1+cols/512 (2)
其中,cols表示二值图像Ib的总列数;
对采样点进行遍历,遍历每个采样点的时候,使用公式(3)计算一个起始列号Seedc:
Seedc=(i+1)*clos/(num_sample+1) (3)
其中,i表示第i个采样点,num_sample表示采样点数量,clos表示二值图像Ib的总列数。
进一步地,所述步骤S2.3找到最大内接矩形Inner(Ip)的具体过程为:
步骤(1)、首先根据集合lines判断Seedc列中最大连续非零线段是否为有效值,如果无效则重新进行下一个采样点遍历;
步骤(2)、初始化当前内接矩形Crect为以Seedc索引处的线段为矩形高,向右延伸一个单位为矩形的宽;同时,按照公式(4)将最大内接矩形化Inner(Ip)初始化为当前内接矩形Crect;其中,l表示连续非零线段,即:
其中,和/>分别表示Seedc列的最长非零连续线段的起始行号和结束行号;
步骤(3)、如果上述求得的二值图像Ib的最长连续线段集合lines大小为1,则返回当前最大内接矩形Inner(Ip);
步骤(4)、初始化左右边界,分别为left=Seedc-1和right=Seedc+(lines.size()%2),同时获取左右边界所在列的最长连续线段linesleft和linesright;
步骤(5)、当左右边界其中一个存在最长连续线段,就进行循环,在每次循环迭代中,更新左矩阵lrect和右矩阵rrect,并且不断更新Crect和Inner(Ip),计算方法如公式(5)和(6):
lrect={{left,max(linesleft.start,Crect.starty)}{Crect.endx,min(linesleft.end,Crect.endy)}} (5)
rrect={{Crect.startx,max(linesright.start,Crect.starty)},{right+1,min(linesright.end,Crect.endy)}} (6)
其中,Crect记录了当前内接矩形的左上角和右下角坐标,故Crect.startx和Crect.starty分别表示内接矩形左上角的列值和行值。按照公式(5)和(6)计算出的左右矩阵进行比较,当左矩阵面积大于右矩阵时,则将左矩阵赋值给当前内接矩阵Crect,并在左边界未出界的情况下将左边界向左移动一个像素;当左矩阵面积小于等于右矩阵时,则将右矩阵赋值给当前内接矩阵Crect,并在右边界未出界的情况下将右边界向右移动一个像素。然后将所获得的当前内接矩阵Crect和最大内接矩阵Inner(Ip)进行大小比较,若Crect较大,则赋值给Inner(Ip)更新最大内接矩阵;
步骤(6)、循环结束即获得最大内接矩形Inner(Ip)。
进一步地,所述步骤S3.1对全景图像的最大内接矩形Inner(Ip)的左上角和右下角坐标进行归一化处理,归一化公式如(7)和(8):
TopLeft(ix,iy)={Inner(Ip).startx/cols,Inner(Ip).starty/cols} (7)
BottomRight(jx,jy)={Inner(Ip).endx/rows,Inner(Ip).endy/rows} (8)
通过归一化处理后得到最大内接矩形inner(Ip)的左上角和右下角在全景图像Ip上的位置TopLeft(ix,iy)和BottomRight(jx,jy);其中,ix和iy分别表示最大内接矩形inner(Ip)的左上角在全景图像Ip上的行号和列号,jx和jy分别表示最大内接矩形inner(Ip)的右下角在全景图像Ip上的行号和列号;cols和rows表示mask矩阵的列数和行数。
进一步地,所述步骤S3.2计算全景图像的感兴趣区域ROI(Ip)的起始位置、宽度w和高度h的具体方法为:
将全景图像尺寸大小size(Ip)与裁剪区域左上角坐标TopLeft(ix,iy)相乘,得到感兴趣区域的起始坐标,如公式(9):
Start(rx,ry)=size(Ip)*TopLeft(ix,iy) (9)
其中,ix和iy分别表示最大内接矩形inner(Ip)的左上角在全景图像Ip上的行号和列号;rx表示全景图像的感兴趣区域ROI(Ip)的X轴坐标,ry表示全景图像的感兴趣区域ROI(Ip)的Y轴坐标;
通过公式(10)和公式(11)计算感兴趣区域宽度w和高度h为:
w=size(Ip)*(BottomRight(ix,jy)-TopLeft(ix,iy)) (10)
h=size(Ip)*(BottomRight(jx,iy)-TopLeft(ix,iy)) (11)
其中,ix和iy分别表示最大内接矩形inner(Ip)的左上角在全景图像Ip上的行号和列号,jx和jy分别表示最大内接矩形inner(Ip)的右下角在全景图像Ip上的行号和列号。
进一步地,所述步骤S4中计算全景图像Ip的感兴趣区域ROI(Ip)内的像素信息,即可获得新的全景图像I′p,具体步骤为:
步骤S4.1、根据全景图像Ip的感兴趣区域ROI(Ip)的宽度w和高度h,创建一个宽度为w和高度为h的空白矩阵Rectwh;
步骤S4.2、将原始全景图像Ip的感兴趣区域ROI(Ip)内的像素信息复制到空白矩阵Rectwh中,即可获得新的全景图像I′p。
进一步地,所述步骤S5中输出的全景图像的保存类型为以下任意一种:“.jpg”,“.png”,“.bmp”,“.webp”,“.GIFf”,“.gif”,“.hdr”,“.raw”,“.json”,“.xml”和“.bin”。
有益效果:本发明提供的一种快速及高精度的全景图像裁剪方法,根据输入的全景图像计算其对应的二值图像,通过二值图像自动获得最大内接矩形,然后通过最大内接矩形快速找到其感兴趣区域,即可获得裁剪之后的新图像,让图像从不规则形状呈现出规则形状,增强了全景图像的观赏性和基于全景图像的应用系统的性能。
综上所述,本发明提供了一种快速及高精度的全景图像裁剪方法,旨在使拼接之后的全景图像呈现规则形状,既能使其外观更加美观,又能提高基于全景图像的应用系统的性能。
附图说明
图1为本发明的整体流程示意图。
图2为实施例中输入的全景图像。
图3为实施例中生成的二值图像。
图4为实施例中生成的最终全景图像。
具体实施方式:
下面对本发明的技术方案进行详细说明,但是本发明的保护范围不局限于所述实施例。
本发明提供的“一种快速及高精度的全景图像裁剪方法与系统”,首先计算全景图像对应的二值图像(Mask);其次,计算二值图像包含的最大内接矩形;然后,根据最大内接矩形计算全景图像的感兴趣区域;最后,提取感兴趣域内的图像,即可获得完整的全景图像信息。
本发明的应用场景包括:图像编辑、网页设计、广告设计、基于全景图像的人脸识别、图像理解和分析、基于全景图像的导航、基于全景图像的三维重建、室内场景的布局估计、机器人导航、文化遗产的数字化保护、场景信息的展示、影视场景中的内容制作、虚拟现实和增强现实等。
如图1所示,本实施例的一种快速及高精度的全景图像裁剪方法的具体步骤包括:
步骤一:
输入一幅全景图像Ip,获得全景图像Ip的最大宽度和最大高度,然后以此宽度和高度定义一个矩形区域Rect(lp),将该矩形区域填充为白色。接下来,对图像Ip和该矩形区域Rect(Ip)进行“位与”运算,即可获得二值图像Ib。
步骤二:
1)循环迭代二值图像Ib对应的掩码矩阵mask的每列元素,获得每列的最长连续非零线段其中,i表示全景图像Ib的列号,i={1,2,3,…,n};l表示连续非零线段。用/>和/>分别表示当前第i列正在处理的连续非零线段和已经找到的最长连续非零线段。
(1)对于每列元素,首先检查第一个元素是否为空,如果不为空,则将设置为从第一个元素开始的长度为1的线段。
(2)从第二个元素开始遍历:a.获取当前元素和上一个元素的值,判断它们是否为空;b.如果上一个元素为空,但当前元素不为空,说明当前元素是一条新的线段的起点,将设置为从当前元素开始的长度为1的线段;c.如果上一个元素和当前元素都不为空,说明当前元素是上一段线段的延续,将/>的结束位置设置为当前元素的下一行;d.如果上一个元素不为空,但当前元素为空,说明当前线段结束了,将/>和进行比较,将更长的线段赋值给/>然后将/>重置为默认值0;其中,上述过程中的l均表示连续非零线段。
至此,上述遍历过程可表达为:
其中,Ci(start,end)表示为当前第i列正在处理的线段,start和end表示当前线段开始和结束的位置,x表示当前遍历的第i列第x个元素(x>1),colsi(x)表示mask矩阵的第i列的第x个元素的值。
(3)循环结束后,判断最后一个元素是否为空,如果不为空,对和进行比较,将更长的线段赋值给/>
(4)得到了当前第i列的最长连续非零线段并将当前列的最长非零连续线段/>存储到集合lines中,即当前第i列的最长非零连续线段可表示为linesi,lines记录了最长连续非零线段的起始和结束位置,lines表示所有列中的最长连续线段集合。
对于mask矩阵的每一列元素都进行上述(1)至(4)处理步骤,得到所有列的最长连续非零线段集合lines。
2)对二值图像Ib进行等间隔采样,采样点数量(num_sample)定义为:
num_sample=1+cols/512
其中,cols表示二值图像Ib的总列数。对采样点进行遍历,遍历每个采样点的时候,使用公式(3)计算一个起始列号Seedc:
Seedc=(i+1)*clos/(num_sample+1)
其中,i表示第i个采样点,num_sample表示采样点数量,clos表示二值图像Ib的总列数。
3)根据起始列号Seedc遍历二值图像Ib,找到最大内接矩形Inner(Ip)。
(1)首先根据集合lines判断Seedc列中最大连续非零线段是否为有效值,如果无效则返回上述步骤2)中进行下一个采样点遍历。
(2)初始化当前内接矩形Crect为以Seedc索引处的线段为矩形高,向右延伸一个单位为矩形的宽。同时,将最大内接矩形化Inner(Ip)初始化为当前内接矩形。其中,l表示连续非零线段。即:
其中,和/>分别表示Seedc列的最长非零连续线段的起始行号和结束行号。
(3)如果上述求得的二值图像Ib的最长连续线段集合lines大小为1,则返回当前最大内接矩形Inner(Ip)。
(4)初始化左右边界,分别为left=Seedc-1和right=Seedc+(lines.size()%2),同时获取左右边界所在列的最长连续线段linesleft和linesright。
(5)当左右边界其中一个存在最长连续线段,就进行循环。在每次循环迭代中,更新左矩阵lrect和右矩阵rrect,并且不断更新Crect和Inner(Ip),计算方法如下:
lrect={{left,max(linesleft.start,Crect.starty)},{Crect.endx,min(linesleft.end,Crect.endy)}}
rrect={{Crect.start,max(linesright.start,Crect.starty)},{right+1,min(linesright.end,Crect.endy)}}
其中,Crect记录了当前内接矩形的左上角和右下角坐标,故Crect.startx和Crect.starty分别表示内接矩形左上角的列值和行值。对上述求出的左右矩阵进行面积大小比较,当左矩阵面积大于右矩阵时,则将左矩阵赋值给当前内接矩阵Crect,并在左边界未出界的情况下将左边界向左移动一个像素;当左矩阵面积小于等于右矩阵时,则将右矩阵赋值给当前内接矩阵Crect,并在右边界未出界的情况下将右边界向右移动一个像素。然后将所获得的当前内接矩阵Crect和最大内接矩阵Inner(Ip)进行大小比较,若Crect较大,则赋值给Inner(Ip)更新最大内接矩阵。
(6)循环结束,得到最大内接矩形Inner(Ip)。
步骤三:
1)根据步骤二中获得的全景图像的最大内接矩形Inner(Ip),对其左上角和右下角坐标进行归一化处理:
TopLeft(ix,iy)={Inner(Ip).startx/cols,Inner(Ip).starty/cols}
BottomRight(jx,jy)={Inner(Ip).endx/rows,Inner(Ip).endy/rows}
通过归一化处理后得到最大内接矩形inner(Ip)的左上角和右下角在全景图像Ip上的位置TopLeft(ix,iy)和BottomRight(jx,jy);其中,ix和iy分别表示最大内接矩形inner(Ip)的左上角在全景图像Ip上的行号和列号,jx和jy分别表示最大内接矩形inner(Ip)的右下角在全景图像Ip上的行号和列号;cols和rows表示mask矩阵的列数和行数。
2)根据归一化处理后的结果,计算全景图像的感兴趣区域ROI(Ip)的起始位置、宽度w和高度h。
将全景图像尺寸大小size(Ip)与裁剪区域左上角坐标TopLeft(ix,iy)相乘,得到感兴趣区域的起始坐标:
Start(rx,ry)=size(Ip)*TopLeft(ix,iy)
其中,ix和iy分别表示最大内接矩形inner(Ip)的左上角在全景图像Ip上的行号和列号;rx表示全景图像的感兴趣区域ROI(Ip)的X轴坐标,ry表示全景图像的感兴趣区域ROI(Ip)的Y轴坐标。
感兴趣区域宽度w和高度h为:
w=size(Ip)*(BottomRight(ix,jy)-TopLeft(ix,iy))
h=size(Ip)*(BottomRight(jx,iy)-TopLeft(ix,iy))
其中,ix和iy分别表示最大内接矩形inner(Ip)的左上角在全景图像Ip上的行号和列号,jx和jy分别表示最大内接矩形inner(Ip)的右下角在全景图像Ip上的行号和列号。
步骤四:
根据步骤三中获得的感兴趣区域的起始坐标位置Start(rx,ry)、宽度w和高度h,定义一个宽度为w和高度h的空白矩阵Rectwh,从原始全景图像Ip中提取与感兴趣区域ROI(Ip)所指定的矩形区域相对应的子矩阵,将其保存到Rectwh中,即可获得新的全景图像I′p。
步骤五
根据步骤四获得的新全景图像I′p,将其在窗口输出展示出来,输出的全景图像可以保存为多种类型的图像格式,例如“.jpg”,“.png”,“.bmp”,“.webp”,“.GIFf”,“.gif”,“.hdr”,“.raw”,“.json”,“.xml”和“.bin”。
实施例:
本实施例的具体过程为:输入一幅全景图,如图2所示;计算得到的全景图像的二值图像如图3所示;最后,计算全景图像的最大内接矩形并根据所求得的最大内接矩形,裁剪掉内接矩形以外的区域,即可获得规整的全景图像,如图4所示。
Claims (9)
1.一种快速及高精度的全景图像裁剪方法,其特征在于,包括以下步骤:
步骤S1、输入全景图像Ip,计算全景图像对应的二值图像Ib;
步骤S2、根据全景图像Ip的二值图像Ib,计算全景图像Ip的最大内接矩形Inner(Ip);
步骤S2.1、循环迭代二值图像Ib每列的元素,找到每列的最长连续非零线段其中,i表示全景图像Ib的列号,l表示连续非零线段;
步骤S2.2、对二值图像Ib进行等间隔采样,循环遍历每个采样点,并根据当前遍历的采样点计算二值图像Ib的起始列号Seedc;
步骤S2.3、根据步骤S2.2中的起始列号Seedc遍历二值图像Ib,即可获得最大内接矩形Inner(Ip);
步骤S3、根据全景图像的最大内接矩形Inner(Ip),计算全景图像的感兴趣区域ROI(Ip);
步骤S3.1、根据步骤S2得到全景图像的最大内接矩形Inner(Ip),可知最大内接矩形inner(Ip)的左上角在全景图像Ip上的位置TopLeft(ix,iy)和右下角在全景图像Ip上的位置BottomRight(jx,jy);其中,ix和iy分别表示最大内接矩形inner(Ip)的左上角在全景图像Ip上的行号和列号;jx和jy分别表示最大内接矩形inner(Ip)的右下角在全景图像Ip上的行号和列号;
步骤S3.2、根据最大内接矩形inner(Ip)的左上角在全景图像Ip上的位置TopLeft(ix,iy)和右下角在全景图像Ip上的位置BottomRight(jx,jy),可以获得全景图像的感兴趣区域ROI(Ip)的起始位置Start(rx,ry)以及宽度w长度h;其中,rx表示全景图像的感兴趣区域ROI(Ip)的X轴坐标,ry表示全景图像的感兴趣区域ROI(Ip)的Y轴坐标;
步骤S4、提取全景图像Ip的感兴趣区域ROI(Ip)内的像素信息,即可获得新的全景图像I′p;
步骤S5、输出新的全景图像I′p,算法计算过程结束。
2.根据权利要求1所述的快速及高精度的全景图像裁剪方法,其特征在于:所述步骤S1根据全景图像Ip计算对应的二值图像Ib的具体步骤为:
步骤S1.1、创建一个与全景图像Ip具有相同高度和宽度的矩形区域Rest(Ip),然后将该矩形区域填充为白色;
步骤S1.2、对全景图像Ip和矩形区域像素Rest(Ip)进行“位与”运算,即可获得二值图像Ib。
3.根据权利要求1所述的快速及高精度的全景图像裁剪方法,其特征在于:所述步骤S2.1中寻找每列的最长连续非零线段时,用/>和/>分别表示当前第i列正在处理的连续非零线段和已经找到的最长连续非零线段,具体方法为:
步骤(1)、对于二值图像Ib对应掩码矩阵mask的每列元素,首先检查第一个元素是否为空,如果不为空,则将设置为从第一个元素开始的长度为1的线段;
步骤(2)、从第二个元素开始遍历:a、获取当前元素和上一个元素的值,判断它们是否为空;b、如果上一个元素为空,但当前元素不为空,说明当前元素是一条新的线段的起点,将设置为从当前元素开始的长度为1的线段;c、如果上一个元素和当前元素都不为空,说明当前元素是上一段线段的延续,将/>的结束位置设置为当前元素的下一行;d、如果上一个元素不为空,但当前元素为空,说明当前线段结束了,将/>和进行比较,将更长的线段赋值给/>然后将/>重置为默认值0;其中,上述过程中的l均表示连续非零线段;
至此,上述遍历过程表达为公式(1):
其中,Ci(start,end)表示为当前第i列正在处理的线段,start和end表示当前线段开始和结束的位置,x表示当前遍历的第i列第x个元素(x>1),colsi(x)表示mask矩阵的第i列的第x个元素的值;
步骤(3)、循环结束后,判断最后一个元素是否为空,如果不为空,对和进行比较,将更长的线段赋值给/>
步骤(4)、得到了当前第i列的最长连续非零线段并将当前列的最长非零连续线段/>存储到集合lines中,即当前第i列的最长非零连续线段可表示为linesi,lines记录了最长连续非零线段的起始和结束位置,lines表示所有列中的最长连续线段集合;
对于mask矩阵的每一列元素都进行上述步骤(1)至步骤(4)处理,得到所有列的最长连续非零线段集合lines。
4.根据权利要求1所述的快速及高精度的全景图像裁剪方法,其特征在于:所述步骤S2.2对二值图像Ib进行等间隔采样时,其采样点数量num_sample计算公式(2)为:
num_sample=1+cols/512 (2)
其中,cols表示二值图像Ib的总列数;
对采样点进行遍历,遍历每个采样点的时候,使用公式(3)计算一个起始列号Seedc:
Seedc=(i+1)*clos/(num_sample+1) (3)
其中,i表示第i个采样点,num_sample表示采样点数量,clos表示二值图像Ib的总列数。
5.根据权利要求1所述的快速及高精度的全景图像裁剪方法,其特征在于:所述步骤S2.3找到最大内接矩形Inner(Ip)的具体过程为:
步骤(1)、首先根据集合lines判断Seedc列中最大连续非零线段是否为有效值,如果无效则重新进行下一个采样点遍历;
步骤(2)、初始化当前内接矩形Crect为以Seedc索引处的线段为矩形高,向右延伸一个单位为矩形的宽;同时,按照公式(4)将最大内接矩形化Inner(Ip)初始化为当前内接矩形Crect;其中,l表示连续非零线段,即:
其中,和/>分别表示Seedc列的最长非零连续线段的起始行号和结束行号;
步骤(3)、如果上述求得的二值图像Ib的最长连续线段集合lines大小为1,则返回当前最大内接矩形Inner(Ip);
步骤(4)、初始化左右边界,分别为left=Seedc-1和right=Seedc+(lines.size()%2),同时获取左右边界所在列的最长连续线段linesleft和linesright;
步骤(5)、当左右边界其中一个存在最长连续线段,就进行循环,在每次循环迭代中,更新左矩阵lrect和右矩阵rrect,并且不断更新Crect和Inner(Ip),计算方法如公式(5)和(6):
lrect={{left,max(linesleft.start,Crect.starty)}{Crect.endx,min(linesleft.end,Crect.endy)}} (5)
rrect={{Crect.startx,max(linesright.start,Crect.starty)},{right+1,min(linesrig.end,Crect.endy)}} (6)
其中,Crect记录了当前内接矩形的左上角和右下角坐标,故Crect.startx和Crect.starty分别表示内接矩形左上角的列值和行值;按照公式(5)和(6)计算出的左右矩阵进行比较,当左矩阵面积大于右矩阵时,则将左矩阵赋值给当前内接矩阵Crect,并在左边界未出界的情况下将左边界向左移动一个像素;当左矩阵面积小于等于右矩阵时,则将右矩阵赋值给当前内接矩阵Crect,并在右边界未出界的情况下将右边界向右移动一个像素;然后将所获得的当前内接矩阵Crect和最大内接矩阵Inner(Ip)进行大小比较,若Crect较大,则赋值给Inner(Ip)更新最大内接矩阵;
步骤(6)、循环结束即获得最大内接矩形Inner(Ip)。
6.根据权利要求1所述的快速及高精度的全景图像裁剪方法,其特征在于:所述步骤S3.1对全景图像的最大内接矩形Inner(Ip)的左上角和右下角坐标进行归一化处理,归一化公式如(7)和(8):
TopLeft(ix,iy)={Inner(Ip).startx/cols,Inner(Ip).starty/cols} (7)
BottomRight(jx,jy)={Inner(Ip).endx/rows,Inner(Ip).endy/rows} (8)
通过归一化处理后得到最大内接矩形inner(Ip)的左上角和右下角在全景图像Ip上的位置TopLeft(ix,iy)和BottomRight(jx,jy);其中,ix和iy分别表示最大内接矩形inner(Ip)的左上角在全景图像Ip上的行号和列号,jx和jy分别表示最大内接矩形inner(Ip)的右下角在全景图像Ip上的行号和列号;cols和rows表示mask矩阵的列数和行数。
7.根据权利要求1所述的快速及高精度的全景图像裁剪方法,其特征在于:所述步骤S3.2计算全景图像的感兴趣区域ROI(Ip)的起始位置、宽度w和高度h的具体方法为:
将全景图像尺寸大小size(Ip)与裁剪区域左上角坐标TopLeft(ix,iy)相乘,得到感兴趣区域的起始坐标,如公式(9):
Start(rx,ry)=size(Ip)*TopLeft(ix,iy) (9)
其中,ix和iy分别表示最大内接矩形inner(Ip)的左上角在全景图像Ip上的行号和列号;rx表示全景图像的感兴趣区域ROI(Ip)的X轴坐标,ry表示全景图像的感兴趣区域ROI(Ip)的Y轴坐标;
通过公式(10)和公式(11)计算感兴趣区域宽度w和高度h为:
w=size(Ip)*(BottomRight(ix,jy)-TopLeft(ix,iy)) (10)
h=size(Ip)*(BottomRight(jx,iy)-TopLeft(ix,iy)) (11)
其中,ix和iy分别表示最大内接矩形inner(Ip)的左上角在全景图像Ip上的行号和列号,jx和jy分别表示最大内接矩形inner(Ip)的右下角在全景图像Ip上的行号和列号。
8.根据权利要求1所述的快速及高精度的全景图像裁剪方法,其特征在于:所述步骤S4中计算全景图像Ip的感兴趣区域ROI(Ip)内的像素信息,即可获得新的全景图像I′p,具体步骤为:
步骤S4.1、根据全景图像Ip的感兴趣区域ROI(Ip)的宽度w和高度h,创建一个宽度为w和高度为h的空白矩阵Rectwh;
步骤S4.2、将原始全景图像Ip的感兴趣区域ROI(Ip)内的像素信息复制到空白矩阵Rectwh中,即可获得新的全景图像I′p。
9.根据权利要求1所述的快速及高精度的全景图像裁剪方法,其特征在于:所述步骤S5中全景图像的类型为以下任意一种:“jpg”,“.png”,“.bmp”,“.webp”,“.GIFf”,“.gif,“.hdr”,“.raw”,“.json”,“.xml”和“.bin”。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310800725.8A CN116934774B (zh) | 2023-06-30 | 2023-06-30 | 一种快速及高精度的全景图像裁剪方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310800725.8A CN116934774B (zh) | 2023-06-30 | 2023-06-30 | 一种快速及高精度的全景图像裁剪方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116934774A CN116934774A (zh) | 2023-10-24 |
CN116934774B true CN116934774B (zh) | 2024-03-22 |
Family
ID=88381900
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310800725.8A Active CN116934774B (zh) | 2023-06-30 | 2023-06-30 | 一种快速及高精度的全景图像裁剪方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116934774B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013079776A2 (en) * | 2011-11-30 | 2013-06-06 | Nokia Corporation | Method and apparatus for image stitching |
CN103729655A (zh) * | 2014-01-22 | 2014-04-16 | 哈尔滨工业大学 | 一种用于片式元件视觉定位的检测方法 |
CN105869113A (zh) * | 2016-03-25 | 2016-08-17 | 华为技术有限公司 | 全景图像的生成方法和装置 |
CN107240101A (zh) * | 2017-04-13 | 2017-10-10 | 桂林优利特医疗电子有限公司 | 目标区域检测方法和装置、图像分割方法和装置 |
CN107610124A (zh) * | 2017-10-13 | 2018-01-19 | 中冶赛迪技术研究中心有限公司 | 一种炉口图像预处理方法 |
CN112634286A (zh) * | 2020-12-24 | 2021-04-09 | 宁波视睿迪光电有限公司 | 图像的裁剪方法及装置 |
CN112991375A (zh) * | 2021-02-08 | 2021-06-18 | 上海通办信息服务有限公司 | 将任意形状图像区域重塑为n个矩形区域的方法及其系统 |
CN116012573A (zh) * | 2022-11-10 | 2023-04-25 | 广东奥普特科技股份有限公司 | 感兴趣区域快速提取方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7386190B2 (en) * | 2004-04-30 | 2008-06-10 | Corel Tw Corp. | Method for image cropping |
-
2023
- 2023-06-30 CN CN202310800725.8A patent/CN116934774B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013079776A2 (en) * | 2011-11-30 | 2013-06-06 | Nokia Corporation | Method and apparatus for image stitching |
CN103729655A (zh) * | 2014-01-22 | 2014-04-16 | 哈尔滨工业大学 | 一种用于片式元件视觉定位的检测方法 |
CN105869113A (zh) * | 2016-03-25 | 2016-08-17 | 华为技术有限公司 | 全景图像的生成方法和装置 |
CN107240101A (zh) * | 2017-04-13 | 2017-10-10 | 桂林优利特医疗电子有限公司 | 目标区域检测方法和装置、图像分割方法和装置 |
CN107610124A (zh) * | 2017-10-13 | 2018-01-19 | 中冶赛迪技术研究中心有限公司 | 一种炉口图像预处理方法 |
CN112634286A (zh) * | 2020-12-24 | 2021-04-09 | 宁波视睿迪光电有限公司 | 图像的裁剪方法及装置 |
CN112991375A (zh) * | 2021-02-08 | 2021-06-18 | 上海通办信息服务有限公司 | 将任意形状图像区域重塑为n个矩形区域的方法及其系统 |
CN116012573A (zh) * | 2022-11-10 | 2023-04-25 | 广东奥普特科技股份有限公司 | 感兴趣区域快速提取方法 |
Non-Patent Citations (2)
Title |
---|
Progressive completion of a panoramic image;Shwu-Huey Yen等;《Multimedia Tools and Applications 》(第76期);11603–11620 * |
校园漫游互动AR系统设计与实现;秦胜伟等;《系统仿真学报》;第31卷(第7期);1367-1376 * |
Also Published As
Publication number | Publication date |
---|---|
CN116934774A (zh) | 2023-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11595737B2 (en) | Method for embedding advertisement in video and computer device | |
Vaquero et al. | A survey of image retargeting techniques | |
US8249394B2 (en) | Method and system for shift-map image editing | |
CN112132058B (zh) | 一种头部姿态估计方法及其实现系统、存储介质 | |
CN110180186A (zh) | 一种地形图转换方法及系统 | |
CN112633277A (zh) | 基于深度学习的航道船牌检测、定位及识别方法 | |
CN112991558B (zh) | 一种地图编辑方法和地图编辑器 | |
CN110909724A (zh) | 一种多目标图像的缩略图生成方法 | |
CN115546273A (zh) | 一种面向室内鱼眼图像的场景结构深度估计方法 | |
CN109600667B (zh) | 一种基于网格与帧分组的视频重定向的方法 | |
CN114386504A (zh) | 一种工程图纸文字识别方法 | |
Chang et al. | Panoramic human structure maintenance based on invariant features of video frames | |
CN116934774B (zh) | 一种快速及高精度的全景图像裁剪方法 | |
Zhu et al. | Large-scale architectural asset extraction from panoramic imagery | |
CN112037109A (zh) | 一种改进的基于显著性目标检测的图像水印添加方法和系统 | |
CN112614149A (zh) | 基于实例分割的语义合成方法 | |
JP2001052011A (ja) | 画像検索装置およびその方法 | |
CN113240573B (zh) | 局部和全局并行学习的高分辨率图像风格变换方法及系统 | |
CN113011327A (zh) | 一种三维图形识别方法、装置、设备及存储介质 | |
JP2018010359A (ja) | 情報処理装置、情報処理方法、およびプログラム | |
CN111080667A (zh) | 一种快速人像照片的自动构图裁剪方法及系统 | |
CN117292159B (zh) | 一种建筑模型招牌纹理自动优化方法和系统 | |
CN112583976B (zh) | 图形码显示方法、设备及可读存储介质 | |
Riaz et al. | A photograph reconstruction by object retargeting for better composition | |
CN111738088B (zh) | 一种基于单目摄像头的行人距离预测方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |