[go: up one dir, main page]

CN106846255B - 图像旋转实现方法及装置 - Google Patents

图像旋转实现方法及装置 Download PDF

Info

Publication number
CN106846255B
CN106846255B CN201611235685.3A CN201611235685A CN106846255B CN 106846255 B CN106846255 B CN 106846255B CN 201611235685 A CN201611235685 A CN 201611235685A CN 106846255 B CN106846255 B CN 106846255B
Authority
CN
China
Prior art keywords
rotation
sequence
pixel
image
row
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
Application number
CN201611235685.3A
Other languages
English (en)
Other versions
CN106846255A (zh
Inventor
赵艳云
张师群
罗旻
鲍东山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
New Shoreline Beijing Science And Technology Group Co ltd
Original Assignee
New Shoreline Beijing Science And Technology Group Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by New Shoreline Beijing Science And Technology Group Co ltd filed Critical New Shoreline Beijing Science And Technology Group Co ltd
Priority to CN201611235685.3A priority Critical patent/CN106846255B/zh
Publication of CN106846255A publication Critical patent/CN106846255A/zh
Application granted granted Critical
Publication of CN106846255B publication Critical patent/CN106846255B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/60Rotation of whole images or parts thereof
    • G06T3/602Rotation of whole images or parts thereof by block rotation, e.g. by recursive reversal or rotation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/60Rotation of whole images or parts thereof
    • G06T3/606Rotation of whole images or parts thereof by memory addressing or mapping

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Editing Of Facsimile Originals (AREA)
  • Image Processing (AREA)

Abstract

本发明公开了一种图像旋转实现方法及装置,该方法包括:根据待旋转图像的源存储格式和源数据格式、图像的旋转角度,确定图像数据的读取顺序;根据确定的读取顺序读取图像数据中的各旋转单元,传送给旋转器;旋转器根据旋转角度对将读取到的旋转单元中的像素进行像素旋转,重组像素旋转后的旋转单元,得到相应旋转角度的图像。通过硬件的方式,以改变读取顺序的形式实现图像旋转,降低了硬件成本投入,提高了处理速度和效率。

Description

图像旋转实现方法及装置
技术领域
本发明属于图像处理技术领域,尤其涉及一种图像旋转实现方法及装置。
背景技术
随着电子技术的发展,电子图像的使用越来越广泛,在电子图像使用过程中,经常会需要对图像进行旋转操作,以方便用户浏览。
现有的图像旋转技术多用软件实现,通过软件对图像进行旋转处理,改变图像的显示方向,这种方式由于需要处理的数据量比较大,通常响应速度较慢,不能满足图像旋转操作快速、及时性的处理要求。
而极少量用硬件来实现的方案,使用硬件处理的方式由于受限于硬件本身的性能导致其在现有技术中使用的比较少,其使用的随机存储贮存器(RAM)尺寸较大,从而增加芯片面积,这就对硬件本身提出了更高的要求。
可见,现有技术中的图像旋转实现方案,均不能满足在不增加硬件投入的情况下,快速、高效完成图像旋转操作。
发明内容
有鉴于此,本发明的一个目的是图像旋转实现方法及装置。为了对披露的实施例的一些方面有一个基本的理解,下面给出了简单的概括。该概括部分不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围。其唯一目的是用简单的形式呈现一些概念,以此作为后面的详细说明的序言。
本发明实施例提供一种图像旋转实现方法,包括:
根据待旋转图像的源存储格式和源数据格式、图像的旋转角度,确定图像数据的读取顺序;
根据确定的读取顺序读取图像数据中的各旋转单元,传送给旋转器;
旋转器根据旋转角度对将读取到的旋转单元中的像素进行像素旋转,重组像素旋转后的旋转单元,得到相应旋转角度的图像。
在一些可选的实施例中,当旋转角度为180度时:
所述确定图像数据的读取顺序,具体包括:将内存存取时的旋转单元的地址顺序进行反转;相应的,
所述根据旋转角度对将读取到的旋转单元中像素进行像素旋转,重组像素旋转后的旋转单元,得到相应旋转角度的图像,具体包括:
将每个旋转单元内的像素顺序进行反转;
将像素反转后的旋转单元按反转后的地址顺序进行重新组织,得到处理后的图像数据。
在一些可选的实施例中,将每个旋转单元内的像素顺序进行反转,具体包括:
将每个旋转单元中包含的一行像素进行顺序反转;进行顺序反转时,将所述一行像素分为指定数量的像素组,对像素组的顺序进行反转,以及对像素组中的像素进行顺序反转。
在一些可选的实施例中,当旋转角度为90或270度时:
所述确定图像数据的读取顺序,具体包括:将内存存取时的旋转单元的地址顺序按旋转角度进行变换;相应的,
所述根据旋转角度对将读取到的旋转单元中像素进行像素旋转,重组像素旋转后的旋转单元,得到相应旋转角度的图像,具体包括:
将每个旋转单元内的像素进行行列互换;
将行列互换后的旋转单元,按照变换后的地址顺序以选定的旋转单元组为单位进行重新组织,得到处理后的图像数据。
在一些可选的实施例中,将每个旋转单元内的像素进行行列互换,具体包括:
通过旋转器将旋转单元中的像素矩阵按照一列接一列的顺序填充,再按照一行接一行的顺序读取,实现将每个旋转单元内的像素进行行列互换。
本发明实施例还提供一种图像旋转实现装置,包括:
确定模块,用于根据待旋转图像的源存储格式和源数据格式、图像的旋转角度,确定图像数据的读取顺序;
内存存取模块,用于根据确定的读取顺序读取图像数据中的各旋转单元,传送给旋转器;
旋转器,用于根据旋转角度对将读取到的旋转单元中的像素进行像素旋转;
重组模块,用于重组像素旋转后的旋转单元,得到相应旋转角度的图像。
在一些可选的实施例中,所述确定模块,具体用于当旋转角度为180度时,将内存存取时的旋转单元的地址顺序进行反转;相应的,
所述旋转器,具体用于将每个旋转单元内的像素顺序进行反转;
所述重组单元,具体用于将像素反转后的旋转单元按反转后的地址顺序进行重新组织,得到处理后的图像数据。
在一些可选的实施例中,所述旋转器,具体用于将每个旋转单元中包含的一行像素进行顺序反转;进行顺序反转时,将所述一行像素分为指定数量的像素组,对像素组的顺序进行反转,以及对像素组中的像素进行顺序反转。
在一些可选的实施例中,所述确定模块,具体用于当旋转角度为90或270度时,将内存存取时的旋转单元的地址顺序按旋转角度进行变换;相应的,
所述旋转器,具体用于将每个旋转单元内的像素进行行列互换;
所述重组单元,具体用于将行列互换后的旋转单元,按照变换后的地址顺序以选定的旋转单元组为单位进行重新组织,得到处理后的图像数据。
在一些可选的实施例中,所述旋转器,具体用于将旋转单元中的像素矩阵按照一列接一列的顺序填充,再按照一行接一行的顺序读取,实现将每个旋转单元内的像素进行行列互换。
本发明实施例提供的图像旋转实现方法及装置,根据待旋转图像的源存储格式和源数据格式、图像的旋转角度,确定图像数据的读取顺序,通过硬件的方式,以改变读取顺序的形式实现图像旋转和数据重组,得到角度旋转后的图像数据,采用硬件内存存取的方式实现,针对图像数据的特点,充分复用内存资源,降低对硬件性能的要求,减少硬件成本投入,同时,提高了处理速度和效率,即便是大数据量的图像,也能够处理的很及时。
为了上述以及相关的目的,一个或多个实施例包括后面将详细说明并在权利要求中特别指出的特征。下面的说明以及附图详细说明某些示例性方面,并且其指示的仅仅是各个实施例的原则可以利用的各种方式中的一些方式。其它的益处和新颖性特征将随着下面的详细说明结合附图考虑而变得明显,所公开的实施例是要包括所有这些方面以及它们的等同。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1是本发明实施例一中图像旋转实现方法的流程图;
图2是本发明实施例一中图像旋转实现方法的原理示意图;
图3是本发明实施例二中图像旋转实现方法的一种具体实现流程图;
图4是本发明实施例二中原始图像示意图;
图5是本发明实施例二中地址顺寻反转后的图像示意图;
图6是本发明实施例三中图像旋转实现方法的一种具体实现流程图;
图7是本发明实施例三中原始图像示意图;
图8是本发明实施例三中90度旋转后的图像示意图;
图9是本发明实施例三中270度旋转后的图像示意图;
图10是本发明实施例中旋转器读写顺序示意图之一;
图11是本发明实施例中旋转器读写顺序示意图之二;
图12是本发明实施例中旋转器读写顺序示意图之三;
图13是本发明实施例中第一轮读取时块的排列方式示意图;
图14是本发明实施例中第一轮读取时的填充方式示意图;
图15是本发明实施例中第一轮读取时的读取顺序示意图;
图16是本发明实施例中第二轮读取时块的排列方式示意图;
图17是本发明实施例中第二轮读取时的填充方式示意图;
图18是本发明实施例中第二轮读取时的读取方式示意图;
图19是本发明实施例中第三轮读取时块的排列方式示意图;
图20是本发明实施例中图像旋转实现装置的结构示意图。
具体实施方式
以下描述和附图充分地示出本发明的具体实施方案,以使本领域的技术人员能够实践它们。其他实施方案可以包括结构的、逻辑的、电气的、过程的以及其他的改变。实施例仅代表可能的变化。除非明确要求,否则单独的组件和功能是可选的,并且操作的顺序可以变化。一些实施方案的部分和特征可以被包括在或替换其他实施方案的部分和特征。本发明的实施方案的范围包括权利要求书的整个范围,以及权利要求书的所有可获得的等同物。在本文中,本发明的这些实施方案可以被单独地或总地用术语“发明”来表示,这仅仅是为了方便,并且如果事实上公开了超过一个的发明,不是要自动地限制该应用的范围为任何单个发明或发明构思。
为了解决现有技术中存在的通过软件旋转图像时,由于处理的数据量大,响应速度慢,又受限于硬件本身性能,无法在不增加硬件投入的情况下快速、高效的完成图像旋转的问题,本发明实施例提供一种图像旋转实现方法,通过对硬件内存存取的复用,通过一定的读写顺序的变化,实现图像的旋转,降低对硬件的要求,提高处理的速度和效率。
下面通过具体的实施例进行详细描述。
实施例一
本发明实施例一提供一种图像旋转实现方法,其流程如图1所示,其原理如图2所示,该方法包括如下步骤:
步骤S101:根据待旋转图像的源存储格式和源数据格式、图像的旋转角度,确定图像数据的读取顺序。
如图2所示的,通过直接内存存取(DMA),旋转器(Rotator),随机存储贮存器控制器(RAM Controller)三个硬件模块组合来实现图像旋转。比如选视屏旋转角度或移动显示屏时,导致的图像显示角度旋转等。
DMA根据需要旋转的角度和图片源存储格式以及图片源数据格式,确定图像数据的读取顺序。其中,需要旋转的角度可以是90°、180°、270°等角度。图片源存储格式可以是线性的图片存储模式(linear mode),块格式的图片存储模式(tile mode)等存储格式。图片源数据格式可以是32bpp,16bpp,8bpp等数据格式。
步骤S102:根据确定的读取顺序读取图像数据中的各旋转单元,传送给旋转器。
DMA以确定出来的顺序在双倍速率同步动态随机存储器(ddr)中读取图像数据,传送给Rotator。
步骤S103:旋转器根据旋转角度对将读取到的旋转单元中的像素进行像素旋转。
Rotator是一个行列转换矩阵,将从DMA读取来的原始图片中的每一个旋转单元进行行列转换。使得各旋转单元中所包含的图像像素的顺序改变,达到图像旋转显示的效果。
步骤S104:重组像素旋转后的旋转单元,得到相应旋转角度的图像。
RAM Controller是一个片上存储器的读写控制器,它将Rotator以单元块的顺序发来的数据,按照显示器刷新的光栅扫描(Raster scan)顺序输出。从而实现数据的重组输出,得到相应旋转角度的输出图像。
实施例二
本发明实施例二提供一种图像旋转实现方法的具体实现流程,针对180度旋转地情况进行详细描述,其流程如图3所示,该方法包括如下步骤:
步骤S201:根据待旋转图像的源存储格式和源数据格式、图像的旋转角度180度,将内存存取时的旋转单元的地址顺序进行反转。
该步骤由DMA处理。180度旋转时,实际上只要把各像素点的顺序按照原来的存储格式和数据格式进行像素点顺序反转即可,但由于内存读取一般不是一次只读取一个像素点,因此需要以旋转单元为单位进行地址顺序的反转处理。
步骤S202:将地址顺序反转后的旋转单元,传送给旋转器。
步骤S203:将每个旋转单元内的像素顺序进行反转。
对旋转单元进行地址顺序的反转处理后,还需要将旋转单元中的每个像素点的顺序进行反转处理。即将每个旋转单元中包含的一行像素进行顺序反转;进行顺序反转时,将一行像素分为指定数量的像素组,对像素组的顺序进行反转,以及对像素组中的像素进行顺序反转。
步骤S204:将像素反转后的旋转单元按反转后的地址顺序进行重新组织,得到处理后的图像数据。
旋转单元地址顺序反转和旋转单元中的像素顺序反转后,进行重新组织,即可得到反转后的图像数据,反转后的图像数据则对应着旋转180度后的图像。
也就是说,要实现180°旋转(rotation),需要以下2个主要步骤:
1>和0°相比,将向ddr取数的地址顺序反转;
2>为了满足实时性要求,DMA的突发长度(burst length)和ddr的burst length相同。以burst length=2为例,每个处理(transaction)取到256bit(8个32bpp像素)数据为例。那么需要将256比特(bit)中的两个128bit的顺序反转过来;128bit中的四个32bit像素的顺序也需要反转过来。
以上1>由DMA实现,2>由Rotator实现。在这个场景下,Rotator不需要做行列转换,只需要将一个burst length的数据按照像素的顺序重新整理。
如图4所示为旋转前的原始图像,每一个实线方格代表256bit的旋转单元。数字“0”代表一帧图像的起始地址,介于0~64的数字i表示第i个地址。如图5所示为1>地址顺序反转处理后的图像。
在1>处理之后,数据的顺序变为:
63,62,61,…,56,
55,54,53,…,48,
47,46,45,…,40,
39,38,37,…,32,
31,30,29,…,24,
23,22,21,…,16,
15,14,13,…,8,
7,6,5,…,0。
实施例三
本发明实施例三提供一种图像旋转实现方法的具体实现流程,其流程如图6所示,该方法包括如下步骤:
步骤S301:根据待旋转图像的源存储格式和源数据格式、图像的旋转角度90度或270度,将内存存取时的旋转单元的地址顺序按旋转角度进行变换。
该步骤由DMA处理。其中,90度和270度的变换方向不同。90度和270度度旋转时,实际上只要把各像素点的顺序按照原来的存储格式和数据格式进行相应角度的变换即可,由于内存读取一般不是一次只读取一个像素点,因此需要以旋转单元为单位进行地址顺序的变换处理。
步骤S302:将地址顺序变换后的旋转单元,传送给旋转器。
步骤S303:将每个旋转单元内的像素进行行列互换。
一个旋转单元内其实是一个像素点阵列,因此不仅旋转单元的顺序要进行相应角度的变换,旋转单元内的像素点阵列中的各像素点也要进行相应角度的变换。
步骤S304:将行列互换后的旋转单元,按照变换后的地址顺序以选定的旋转单元组为单位进行重新组织,得到处理后的图像数据。
通过旋转器将旋转单元中的像素矩阵按照一列接一列的顺序填充,再按照一行接一行的顺序读取,实现将每个旋转单元内的像素进行行列互换。
旋转单元地址顺序按角度变换后和旋转单元中的像素也按角度变换后,进行重新组织,即可得到反转后的图像数据,反转后的图像数据则对应着旋转90度或270度后的图像。
也就是说,对于要实现90°、270°rotation,需要以下3个主要步骤:
1>和0°相比,将向ddr取数地址顺序按照旋转的角度进行变换;
2>将单元块(block)中的行列进行互换;单元块也就是上述的旋转单元。
3>将各个block中的数据按照实际显示的顺序重新组织。
以上1>由DMA实现,2>由Rotator实现,3>由RAM Controller实现。
DMA实现的功能描述如下:
如图7所示为旋转前的原始图像,每一个细实线方格代表一个block,它是Rotator能够处理的最小矩阵单元。
经过90°rotation后的图像如图8所示。但是,为了方便RAM Controller中的读写地址的生成,1>中的地址变换应该以“cluster”(图7中各粗实线框包围的部分)为单位重新组织(在介绍RAM Controller时详细描述)。在1>处理之后,数据的顺序变为:
56,24,48,16,40,8,32,0,
57,25,49,17,41,9,33,1,
58,26,50,18,42,10,34,2,
59,27,51,19,43,11,35,3,
60,28,52,20,44,12,36,4,
61,29,53,21,45,13,37,5,
62,30,54,22,46,14,38,6,
63,31,55,23,47,15,39,7。
经过270°rotation后的图像如图9所示,数据的顺序变为:
7,39,15,47,23,55,31,63,
6,38,14,46,21,54,30,62,
5,37,13,45,20,53,29,61,
4,36,12,44,19,52,28,60,
3,35,11,43,18,51,27,59,
2,34,10,42,17,50,26,58,
1,33,9,41,16,49,25,57,
0,32,8,40,15,48,24,56。
Rotator实现的功能描述如下:
Rotator利用一个矩阵将一个旋转单元(或说block)中的列顺序转换为行顺序。也就是将旋转单元中的像素矩阵按照一列接一列的顺序填充,按照一行接一行的顺序读取。如图10、图11、图12为旋转器读写顺序的示意图。每一个单元代表一个像素,可以是32bpp,16bpp,8bpp等。
以DMA输出位宽是256bit,Rotator输出是128bit为例,最小的重复利用的旋转单元(block)参见图10、图11、图12,其表示出了90°、270°rotation的block。其中,w0~wn表示按照一列接一列的顺序填充,r0~rn表示按照一行接一行的顺序读取。
图10、图11和图12分别示意出了以4比特/像素(byte/pixel)、2比特/像素(byte/pixel)、1比特/像素(byte/pixel)为最小像素单位进行一列接一。列的顺序填充和一行接一行的顺序读取的情况。
其中,图10中从w0~w3进行一列接一列的顺序填充,每行包括8列,然后从r0~r7进行一行接一行的顺序读取。图11中从w0~w7进行一列接一列的顺序填充,每行包括16列,然后从r0~r15进行一行接一行的顺序读取。图12中从w0~w15进行一列接一列的顺序填充,每行包括32列,然后从r0~r31进行一行接一行的顺序读取。
RAM Controller实现的功能描述如下:
Rotator输出的数据是以block为顺序的,但RAM Controller输出的数据是按照光栅扫描也就是从上到下从左到右的屏幕刷新顺序。因此,RAM controller的作用就是将block的顺序转换为光栅扫描顺序。根据原始图像数据格式和类型不同,一个block一般会跨越4~32行像素。而整帧图像的一整行会跨越多个block。RAM Controller所控制的片上RAM,以一个block接一个block的顺序进行填充,以一行接一行的屏幕刷新顺序进行取数。因此,最直观的想法就是使用一个乒乓存储器,同时进行读写。
同时,为了减少RAM尺寸,且要解决读写地址顺序不一致的问题,引入了以一种巧妙的读写地址控制方法。如图13至图17示意出了读写顺序的一个内存使用循环过程。为了简化读写地址的计算方法,RAM中重复使用的区域应该是越小越好。这个重复使用区域包含若干个block,这若干block可以称其为“簇”(cluster)。通过内存的复用可以降低对内存大小的要求,巧妙的内存复用也提高了内存的利用率。
cluster中像素的读取过程描述如下:
以32bpp,linear mode数据为例,一个经过矩阵转换后的block包含4x8像素,一个cluster包含8个block。
RAM存取的具体过程如下:
1>如图13示例了一个cluster中包含的block的排列方式。一个cluster中的各个block以图13所示的方式进行排列;如图13中从左到右分别为block0、block1、block2、block3、block4、block5、block6、block7共8个block,以block0为例包含4x8pixel,其他block类似。
2>如图14所示为一个cluster中填充顺序示意。每个cluster包含8个block,如图14中从左到右分别为block0、block1、block2、block3、block4、block5、block6、block7共8个block。RAM以W0.0,W0.1,……,W0.7;W1.0,W1.1,……,W1.7;……;W7.0,W7.1,……W7.7的顺序进行填充,即一列一列的进行填充。每个block需要8次写动作,所以一个cluster共需要64个写动作,具体参见如图14所示的。
3>如图15所示为一个cluster中读取顺序示意。当一个cluster中所有的block都填充完毕后,可以开始以R0.0,R0.1,……,R0.7;R1.0,R1.1,……,R1.7;……;R7.0,R7.1,……,R7.7的顺序进行读取了。如图15所示的,以这个顺序读取,那么像素就是按照光栅扫描的顺序输出了。
4>如图16所示为读取第一个cluster后,第二个cluster中block的排列方式。在读取的过程中,因读出而变为空闲的区域可以用来进行第二轮的填充,即第二个cluster的填充。第二个cluster中的各个block以图16所示的方式进行排列,如图16中从上到下分别为block0、block1、block2、block3、block4、block5、block6、block7共8个block。
5>如图17所示为第二个cluster中填充顺序示意。第二轮的填充顺序为W0.0,W0.1,……,W0.7;W1.0,W1.1,……,W1.7;……;W7.0,W7.1,……W7.7,这和第一轮的读取顺序一样。如图17所示的,因此,从第一轮读取完毕到第二轮填充完毕不需要很长的等待时间。
6>如图18所示为第二个cluster中读取顺序示意。当RAM通过第二轮的填充再一次被写满后,第二轮的读取开始了。如图18所示的,读顺序是R0.0,R0.1,……,R0.7;R1.0,R1.1,……,R1.7;……;R7.0,R7.1,……,R7.7。
7>如图19所示为读取第二个cluster后,第三个cluster中block的排列方式。如图19所示的,在读取过程中,空出来的区域可以用来填充新一轮的cluster像素。这样clsuter中块的排列方式就又回到了第一轮(如图13所示)的排列方式,进入内存的下一个循环使用过程。
以上过程一直循环,直至所有的cluster都转换完成。
读写地址可以很直观地用三个计数器(counter)来计算和表示出来。计数每个block跨越的行数的counter称为单元计数器(unit counter);计数每个cluster包含的block个数的counter称为块计数器(block counter);计数每个lane(芯片上的一条流通槽)包含的cluster个数的counter称为簇计数器(cluster counter)。每个counter的计数范围如下,当这些counter计数到各自的上限后,复位到0:
unit_counter={0,line_per_block};
block_counter={0,block_per_cluster};
cluster_counter={0,cluster_per_lane}。
上述分别表示:
单元计数={0,每块的行数};
块计数={0,每簇的块数};
簇计数={0,每条流通槽的簇数}。
如果需要旋转的图像比较小,整个图像只包含一个block的话,block_counter和cluster_counter都为0。这种特例情况下只需要对块内的像素进行旋转即可,可以省去反转或变换block的地址顺序的步骤。
上边图13至图19图中,第一轮的写地址w0,第一轮的读地址r0,第二轮的写地址w1,第二轮的读地址r1公式如下,通过三个计数器的计数来表征:
w0={unit_counter,cluster_counter,block_counter};
r0={block_counter,cluster_counter,unit_counter};
w1={block_counter,cluster_counter,unit_counter};
r1={unit_counter,cluster_counter,block_counter}。
上述分别表示:
第一轮的写地址w0={单元计数,簇计数,块计数};
第一轮的读地址r0={块计数,簇计数,单元计数};
第二轮的写地址w1={块计数,簇计数,单元计数};
第二轮的读地址r1={单元计数,簇计数,块计数}。
通过芯片内存存取的复用,提高了芯片利用率,利用读取完后的空闲部分,及时进行下一轮填充,提高了填充读取的处理速度,减少了处理等待时间。
基于同一发明构思,本发明实施例还提供一种图像旋转实现装置,其结构如图20所示,包括:确定模块201、内存存取模块202、旋转器203和重组模块204。
确定模块201,用于根据待旋转图像的源存储格式和源数据格式、图像的旋转角度,确定图像数据的读取顺序;
内存存取模块202,用于根据确定的读取顺序读取图像数据中的各旋转单元,传送给旋转器;
旋转器203,用于根据旋转角度对将读取到的旋转单元中的像素进行像素旋转;
重组模块204,用于重组像素旋转后的旋转单元,得到相应旋转角度的图像。
优选的,上述确定模块201,具体用于当旋转角度为180度时,将内存存取时的旋转单元的地址顺序进行反转;相应的,
优选的,上述旋转器203,具体用于将每个旋转单元内的像素顺序进行反转;
优选的,上述重组单元204,具体用于将像素反转后的旋转单元按反转后的地址顺序进行重新组织,得到处理后的图像数据。
优选的,上述旋转器203,具体用于将每个旋转单元中包含的一行像素进行顺序反转;进行顺序反转时,将所述一行像素分为指定数量的像素组,对像素组的顺序进行反转,以及对像素组中的像素进行顺序反转。
优选的,上述确定模块201,具体用于当旋转角度为90或270度时,将内存存取时的旋转单元的地址顺序按旋转角度进行变换;相应的,
优选的,上述旋转器203,具体用于将每个旋转单元内的像素进行行列互换;
优选的,上述重组单元204,具体用于将行列互换后的旋转单元,按照变换后的地址顺序以选定的旋转单元组为单位进行重新组织,得到处理后的图像数据。
优选的,上述旋转器203,具体用于将旋转单元中的像素矩阵按照一列接一列的顺序填充,再按照一行接一行的顺序读取,实现将每个旋转单元内的像素进行行列互换。
本发明实施例的上述方法和装置,使用可重复利用的矩阵做旋转处理。在RAM使用上通过读写指针的巧妙设计,减少了尺寸,缩小了芯片面积。本发明使用的方法是用硬件来实现,提高了旋转的响应速度。应用范围广泛,可适用于手机,平板电脑等移动显示芯片。
除非另外具体陈述,术语比如处理、计算、运算、确定、显示等等可以指一个或更多个处理或者计算系统、或类似设备的动作和/或过程,所述动作和/或过程将表示为处理系统的寄存器或存储器内的物理(如电子)量的数据操作和转换成为类似地表示为处理系统的存储器、寄存器或者其他此类信息存储、发射或者显示设备内的物理量的其他数据。信息和信号可以使用多种不同的技术和方法中的任何一种来表示。例如,在贯穿上面的描述中提及的数据、指令、命令、信息、信号、比特、符号和码片可以用电压、电流、电磁波、磁场或粒子、光场或粒子或者其任意组合来表示。
应该明白,公开的过程中的步骤的特定顺序或层次是示例性方法的实例。基于设计偏好,应该理解,过程中的步骤的特定顺序或层次可以在不脱离本公开的保护范围的情况下得到重新安排。所附的方法权利要求以示例性的顺序给出了各种步骤的要素,并且不是要限于所述的特定顺序或层次。
在上述的详细描述中,各种特征一起组合在单个的实施方案中,以简化本公开。不应该将这种公开方法解释为反映了这样的意图,即,所要求保护的主题的实施方案需要清楚地在每个权利要求中所陈述的特征更多的特征。相反,如所附的权利要求书所反映的那样,本发明处于比所公开的单个实施方案的全部特征少的状态。因此,所附的权利要求书特此清楚地被并入详细描述中,其中每项权利要求独自作为本发明单独的优选实施方案。
本领域技术人员还应当理解,结合本文的实施例描述的各种说明性的逻辑框、模块、电路和算法步骤均可以实现成电子硬件、计算机软件或其组合。为了清楚地说明硬件和软件之间的可交换性,上面对各种说明性的部件、框、模块、电路和步骤均围绕其功能进行了一般地描述。至于这种功能是实现成硬件还是实现成软件,取决于特定的应用和对整个系统所施加的设计约束条件。熟练的技术人员可以针对每个特定应用,以变通的方式实现所描述的功能,但是,这种实现决策不应解释为背离本公开的保护范围。
结合本文的实施例所描述的方法或者算法的步骤可直接体现为硬件、由处理器执行的软件模块或其组合。软件模块可以位于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、移动磁盘、CD-ROM或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质连接至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。该ASIC可以位于用户终端中。当然,处理器和存储介质也可以作为分立组件存在于用户终端中。
对于软件实现,本申请中描述的技术可用执行本申请所述功能的模块(例如,过程、函数等)来实现。这些软件代码可以存储在存储器单元并由处理器执行。存储器单元可以实现在处理器内,也可以实现在处理器外,在后一种情况下,它经由各种手段以通信方式耦合到处理器,这些都是本领域中所公知的。
上文的描述包括一个或多个实施例的举例。当然,为了描述上述实施例而描述部件或方法的所有可能的结合是不可能的,但是本领域普通技术人员应该认识到,各个实施例可以做进一步的组合和排列。因此,本文中描述的实施例旨在涵盖落入所附权利要求书的保护范围内的所有这样的改变、修改和变型。此外,就说明书或权利要求书中使用的术语“包含”,该词的涵盖方式类似于术语“包括”,就如同“包括,”在权利要求中用作衔接词所解释的那样。此外,使用在权利要求书的说明书中的任何一个术语“或者”是要表示“非排它性的或者”。

Claims (1)

1.一种图像旋转实现方法,其特征在于,包括:
步骤S301:根据待旋转图像的源存储格式和源数据格式、图像的旋转角度为90度或270度,将内存存取时的旋转单元的地址顺序按旋转角度进行变换;
步骤S302:将地址顺序变换后的旋转单元,传送给旋转器;
步骤S303:将每个旋转单元内的像素进行行列互换;
步骤S304:将行列互换后的旋转单元,按照变换后的地址顺序以选定的旋转单元组为单位进行重新组织,得到处理后的图像数据,其中,所述方法还包括对旋转单元中的像素矩阵进行读写地址控制,地址读写顺序的内存使用循环过程包括:步骤A:
针对像素矩阵中的像素点的第一簇,存储器按照逐列的顺序,从左到右,写入所述像素矩阵中的像素点,每次所述存储器写入所述像素矩阵中的像素点的一个块,共计写入8次,其中,一簇包含8个块;
所述存储器按照逐行的顺序读取所述像素矩阵中的像素点,每次所述存储器读取所述像素矩阵中的像素点的一个块,共计读取8次;
针对像素矩阵中的像素点的第二簇,所述存储器按照逐行的顺序,从上到下,写入所述像素矩阵中的像素点,每次所述存储器写入所述像素矩阵中的像素点的一个块,共计读取8次;
所述存储器按照逐列的顺序读取所述像素矩阵中的像素点,每次所述存储器读取所述像素矩阵中的像素点的一个块,共计写入8次;
将步骤A一直循环,直至像素矩阵中所有的簇都完成转换。
CN201611235685.3A 2017-02-23 2017-02-23 图像旋转实现方法及装置 Active CN106846255B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611235685.3A CN106846255B (zh) 2017-02-23 2017-02-23 图像旋转实现方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611235685.3A CN106846255B (zh) 2017-02-23 2017-02-23 图像旋转实现方法及装置

Publications (2)

Publication Number Publication Date
CN106846255A CN106846255A (zh) 2017-06-13
CN106846255B true CN106846255B (zh) 2024-01-16

Family

ID=59112593

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611235685.3A Active CN106846255B (zh) 2017-02-23 2017-02-23 图像旋转实现方法及装置

Country Status (1)

Country Link
CN (1) CN106846255B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107493439A (zh) * 2017-08-16 2017-12-19 珠海全志科技股份有限公司 视频图像旋转方法、旋转装置和计算机存储介质
CN108399604B (zh) * 2018-03-07 2021-08-10 杭州朔天科技有限公司 一种在打印机SoC芯片上支持大尺寸图片旋转的方法
CN108447023B (zh) * 2018-03-20 2021-08-24 北京奇虎科技有限公司 图像处理方法、装置及电子设备
CN108389155B (zh) * 2018-03-20 2021-10-01 北京奇虎科技有限公司 图像处理方法、装置及电子设备
CN109639993B (zh) * 2018-12-28 2020-10-23 北京思比科微电子技术股份有限公司 多窗口曝光控制方法
CN110191298B (zh) * 2019-04-17 2022-05-17 广州虎牙信息科技有限公司 移动终端及其录屏中的视频旋转方法、计算机存储介质
JP7614920B2 (ja) 2021-04-15 2025-01-16 キヤノン株式会社 画像処理装置とその制御方法、及びプログラム

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1929539A (zh) * 2002-07-19 2007-03-14 三星电子株式会社 图像处理装置和方法
CN101000685A (zh) * 2007-01-05 2007-07-18 深圳安凯微电子技术有限公司 一种图像旋转的方法及设备
CN102023807A (zh) * 2010-12-17 2011-04-20 福州瑞芯微电子有限公司 一种实现屏幕顺时针270度旋转的系统
CN102497567A (zh) * 2011-12-06 2012-06-13 合肥工业大学 一种用于固态真三维体积式显示的体素数据重构方法
CN103377030A (zh) * 2012-04-26 2013-10-30 华为技术有限公司 图像旋转控制方法及装置
CN104079857A (zh) * 2013-03-25 2014-10-01 索尼公司 图像处理装置、图像处理方法和程序
CN104331861A (zh) * 2014-11-14 2015-02-04 广东威创视讯科技股份有限公司 图像旋转方法和系统
CN105739874A (zh) * 2016-03-11 2016-07-06 沈阳聚德视频技术有限公司 一种基于dsp的edma在图像旋转中的实现方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1929539A (zh) * 2002-07-19 2007-03-14 三星电子株式会社 图像处理装置和方法
CN101000685A (zh) * 2007-01-05 2007-07-18 深圳安凯微电子技术有限公司 一种图像旋转的方法及设备
CN102023807A (zh) * 2010-12-17 2011-04-20 福州瑞芯微电子有限公司 一种实现屏幕顺时针270度旋转的系统
CN102497567A (zh) * 2011-12-06 2012-06-13 合肥工业大学 一种用于固态真三维体积式显示的体素数据重构方法
CN103377030A (zh) * 2012-04-26 2013-10-30 华为技术有限公司 图像旋转控制方法及装置
CN104079857A (zh) * 2013-03-25 2014-10-01 索尼公司 图像处理装置、图像处理方法和程序
CN104331861A (zh) * 2014-11-14 2015-02-04 广东威创视讯科技股份有限公司 图像旋转方法和系统
CN105739874A (zh) * 2016-03-11 2016-07-06 沈阳聚德视频技术有限公司 一种基于dsp的edma在图像旋转中的实现方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
一种基于图像旋转显示的DDR2高效存储方法;刘承禹等;《计算机技术与发展》;20160430(第04期);第18页第3.2节 *

Also Published As

Publication number Publication date
CN106846255A (zh) 2017-06-13

Similar Documents

Publication Publication Date Title
CN106846255B (zh) 图像旋转实现方法及装置
KR101639574B1 (ko) 적응적 뱅크 어드레스를 제공하는 디스플레이 시스템 및 그것의 어드레스 맵핑 방법
EP2446413B1 (en) Apparatus and method for displaying a warped version of a source image
CN103760525B (zh) 一种补齐式原地矩阵转置方法
CN103377030B (zh) 图像旋转控制方法及装置
CN101958112B (zh) 手持设备屏幕画面同时实现90度和270度旋转的方法
JP2007034304A (ja) 画像の各データが画像マトリクスの特定の画像行および特定の画像列に対応している画像マトリクスにより定義される画像を効率的に回転する方法、グラフィックス・コントローラ及び画像表示システム
EP3494542B1 (en) Method and system for correcting a distorted input image
EP3289560A1 (en) Adaptive memory address scanning based on surface format for graphics processing
US10552307B2 (en) Storing arrays of data in data processing systems
CN116051345A (zh) 图像数据处理方法、装置、计算机设备及可读存储介质
CN116974475A (zh) 数据缓存方法、装置及电子设备
CN111275608A (zh) 一种基于fpga的遥感影像正射纠正并行系统
CN105427235A (zh) 一种图像浏览方法及系统
WO2025021044A1 (zh) 图像数据处理方法、装置、电子设备及可读存储介质
KR19990008388A (ko) 연산기능을 갖는 반도체메모리 및 그것을 사용한 처리장치
CN118014819A (zh) 图像处理装置、方法、芯片、电子设备及可读存储介质
CN106708457B (zh) 用于dmd动态选区的fpga处理模块及其方法
US10152766B2 (en) Image processor, method, and chipset for increasing intergration and performance of image processing
US20220188380A1 (en) Data processing method and apparatus applied to graphics processing unit, and electronic device
CN102651120B (zh) 用于影像处理的存储器存取方法及影像处理装置
CN116312412A (zh) 一种基于fpga的双三次插值电路
CN111080508B (zh) 一种基于dma的gpu子图像处理方法
RU168781U1 (ru) Устройство обработки стереоизображений
KR102565238B1 (ko) 공유 메모리와 캐시인터리빙을 고려한 어드레스 매핑 장치 및 방법

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
CB02 Change of applicant information

Address after: Room E203, Building No. 76, West Fourth Ring South Road, Fengtai District, Beijing 100071

Applicant after: New Shoreline (Beijing) Science and Technology Group Co.,Ltd.

Address before: Room E203, Building No. 76, West Fourth Ring South Road, Fengtai District, Beijing 100071

Applicant before: Beijing New Shoreline Technology Co.,Ltd.

Address after: Room E203, Building No. 76, West Fourth Ring South Road, Fengtai District, Beijing 100071

Applicant after: Beijing New Shoreline Technology Co.,Ltd.

Address before: Room E203, Building No. 76, West Fourth Ring South Road, Fengtai District, Beijing 100071

Applicant before: BEIJING PUJIXIN TECHNOLOGY CO.,LTD.

CB02 Change of applicant information
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant