【发明内容】
本发明要解决的技术问题,在于提供一种基于图像块处理实现图像xy轴镜像和180度旋转系统,实现了图像180度旋转和X轴镜像Y轴镜像功能,将使用的缓存空间进行复用,以减少存储器和硬件电路的使用。
本发明是这样实现的:基于图像块处理实现图像xy轴镜像和180度旋转系统,包括CPU和用于存储原图像和处理后图像数据的外部存储器,所述CPU经总线与配置寄存器连接,所述配置寄存器为图像块读取控制单元和镜像旋转控制单元提供配置信息,所述的配置信息包括:图像的宽高、旋转的角度、原始图像在外部存储器中的起始地址值、经过处理后的图像在外部存储器中的起始地址、电路开始工作的开关位;所述图像块读取控制单元经总线从所述外部存储器读取原图像数据,并把图像数据传送给所述镜像旋转控制单元,所述镜像旋转控制单元根据配置信息,将图像块数据按照顺序和位置存储到内部缓存器中,所述内部缓存器连接有图像块回写控制单元,所述图像块回写控制单元从所述内部缓存器读取处理后的图像块数据,并将图像块数据通过总线回写到所述外部存储器中;其中,所述图像块读取控制单元读取原图像数据中图像块顺序为从上到下,从左到右;其每个图像块是由图像像素组成的,图像块的每行图像像素即为一次突发传输的长度;
所述图像块读取控制单元读取原图像数据中的图像块的起始地址的计算和传输具体步骤如下:
步骤41、首先进行第一个突发传输,该第一个突发传输的地址为整个原图像数据的起始地址;
步骤42、在第一个突发传输结束后,进行第二个突发传输,该第二个突发传输的起始地址为第一个突发传输起始地址加上原图像中一行像素的地址偏移量值;
步骤43、接下来按照步骤42的方式得到其余行突发传输的起始地址并进行传输,直到第一个块列的最后一个突发传输传输完毕;
步骤44、进行第二个块列的突发传输,开始时的突发传输起始地址为原图像起始地址加第一次突发传输长度的像素地址偏移量;
步骤45、进行第二块的下一个突发传输,其开始地址为上一次突发传输起始地址加上原图像中一行像素的地址偏移量值;
步骤46、如此不断重复传输每个图像块,直到整个原图像被读取完毕。
本发明具有如下优点:1.本发明的系统电路结构能同时实现了180度旋转和X轴镜像Y轴镜像功能;
2.将180度旋转和X轴镜像Y轴镜像使用的缓存空间进行复用,减少存储器和硬件电路的使用;
3.相对与其他处理方式,基于块处理的方式保证了只需要很少的硬件电路就可以实现旋转镜像功能;
4.图像块的划分灵活,可以根据需要划分为N乘N的图像块,如果N越大,相应的内部缓存器会变大,但是每次突发传输的长度越大则总线的数据传输效率越高;
5.配置简单,方便用户使用,该系统电路只需要用户配置图像的宽高,旋转镜像的角度,原始图像在外部源存储单元中的起始地址值,处理后的图像在外部存储器中的起始地址,系统就可以完成工作;
6.灵活的应用场合,本发明可以使用于屏幕需要显示的画面的旋转,也可以对一些指定位置的小图像进行旋转处理后写入指定的目标位置,并且可以多次操作以实现图像处理。
【具体实施方式】
如图1所示,基于图像块处理实现图像xy轴镜像和180度旋转系统,包括CPU和用于存储原图像和处理后图像数据的外部存储器,所述CPU经总线与配置寄存器连接,所述配置寄存器为图像块读取控制单元和镜像旋转控制单元提供配置信息,所述的配置信息包括:图像的宽高、旋转的角度、原始图像在外部存储器中的起始地址值、经过处理后的图像在外部存储器中的起始地址、电路开始工作的开关位;所述图像块读取控制单元经总线从所述外部存储器读取原图像数据,并把图像数据传送给所述镜像旋转控制单元,所述镜像旋转控制单元根据配置信息,将图像块数据按照顺序和位置存储到内部缓存器中,所述内部缓存器连接有图像块回写控制单元,所述图像块回写控制单元从所述内部缓存器读取处理后的图像块数据,并将图像块数据通过总线回写到所述外部存储器中。
其中CPU:负责通过总线对寄存器进行配置;
外部存储器:负责存储原图像和处理后图像的数据;
图像块读取控制单元:负责通过总线从外部存储器读取原图像数据,并把数据传送到镜像旋转控制单元;
镜像旋转控制单元:根据用户配置的旋转角度,将读入的图像块数据按照一定顺序和位置存储到内部缓存器中;
内部缓存器:负责缓存经过镜像旋转控制单元处理后的图像块数据;
图像块回写控制单元:负责从内部缓存器读出处理后的图像块数据,再将数据通过总线回写到外部存储器中;
配置寄存器:负责存储整个旋转过程需要的所有信息,,如图像的宽高,旋转的角度,原始图像在外部存储单元中的起始地址值,处理后的图像在外部存储器中的起始地址,电路开始工作的开关位,且用户可使用CPU通过总线对寄存器中的值进行配置;
其本发明的总体操作流程如下:
1.首先用户使用CPU对寄存器进行配置,首先配置需要镜像旋转的角度,然后再配置图像的尺寸,原始图像在外部存储器(外部源存储器)中的起始地址值,处理后的图像(即目标图像)在外部存储器(外部目的存储器)中的起始地址这些必备的信息,当以上信息配置完毕后通过配置系统电路开始工作的开关位使系统电路进入工作状态;
2.在配置完毕系统电路开始工作后,图像块读取控制单元通过总线从外部源存储器按图像块读取原图像数据,并把数据送到镜像旋转控制单元;
3.在读入原图像数据进入镜像旋转控制单元后,镜像旋转控制单元根据用户配置的旋转角度,将读入的图像块数据按照一定顺序和位置存储到内部缓存器中;
4.在一整个图像块的数据都经过镜像旋转控制单元写入到内部缓存器后,图像块回写控制单元开始从内部缓存器读出处理后的图像块数据,再将数据通过总线回写到外部目标存储器中;
5.当处理完一个图像块并将其完全回写到目标外部存储器后,从第二步开始重复一个新的图像块处理;
6.图像块按照一定的读取顺序一个接一个的处理,直到整个图像处理完毕。
下面结合一具体实施例对本发明作进一步的说明。
如图2所示,为本发明实现X轴镜像,Y轴镜像和180度旋转的效果示意图。其Rock chip原图像数据经过图像块读取控制单元,读取到原图像 的每个块图像再通过镜像旋转控制单元处理后得到处理后的整个图像。
Rock chip原图像的处理过程如下:
首先图像读取控制单元读取Rock chip图像的每个块图像,如图3所示,每个小框代表一个图像块,图像块在原图像中的读取顺序为从上到下,从左到右;每个图像块是由图像像素组成的,每个图像块中间的虚线代表图像块内部的像素读取顺序,每个横向的虚线箭头代表一次突发传输的长度。所述图像块读取控制单元读取Rock chip原图像数据中图像块的起始地址的计算和传输具体步骤如下:
步骤10、首先进行第一个突发传输,该第一个突发传输的地址为整个原图像数据的起始地址(即图3所示的读起始点);
步骤11、在第一个突发传输结束后(即图3所示的每个横向的虚线箭头代表一次突发传输),进行第二个突发传输,该第二个突发传输的起始地址为第一个突发传输起始地址加上原图像中一行像素的地址偏移量值;;
步骤12、接下来按照步骤42的方式得到其余行突发传输的起始地址并进行传输,直到第一个块列的最后一个突发传输传输完毕;(块列意为将图像按块划分后,处于同一列的全部块);
步骤13、进行第二个块列的突发传输,开始时的突发传输起始地址为原图像起始地址加第一次突发传输长度的像素地址偏移量;
步骤14、进行第二块的下一个突发传输,其开始地址为上一次突发传输起始地址加上原图像中一行像素的地址偏移量值;
步骤15、如此不断重复传输每个图像块,直到整个原图像被读取完毕。
其次将每个图像块通过镜像旋转控制单元进行处理,如图4所示,为本发明图像块旋转示意图,假设Rock chip原图像,被读取后的每个块的大小为4乘4像素,其中4的大小为一次突发传输的像素数量。图4中的P代表像素(pixel),P后面的数字为像素在原图像块中的行列位置,其整体可以看出镜像旋转前后的像素位置的变化。如图5所示,为本发明镜像旋转控制单元工作原理图,在4乘4原图像块中,每次突发传输4个像素,一共4次传输16个像素,其原图像块读入数据的顺序如图5中虚线所示。其中将4乘 4像素的图像块数据在x轴镜像按照顺序和位置存储到内部缓存器的具体步骤如下(如图6所示):
步骤20、在第一次突发传输中,镜像旋转控制单元将前4个像素依次写入缓存器0的最高地址到最低地址;
步骤21、在第二次突发传输中,镜像旋转控制单元将前4个像素依次写入缓存器1的最高地址到最低地址;
步骤22、以此类推,每次突发传输时,缓存器的编号增加一个,4个像素依次写入对应缓存器的最高地址到最低地址,直到整个图像块读入完毕。
步骤23、当整个图像块传输完毕后,缓存器也都已经存满,此时已经准备好可以被图像块回写单元从内部缓存器读出后通过总线写回目标外部存储器。
其中将4乘4像素的图像块数据在y轴镜像按照顺序和位置存储到内部缓存器的具体步骤如下(如图7所示):
步骤30、在第一次突发传输中,镜像旋转控制单元将前4个像素依次写入缓存器3的最低地址到最高地址;
步骤31、在第二次突发传输中,镜像旋转控制单元将前4个像素依次写入缓存器2的最低地址到最高地址;
步骤32、以此类推,每次突发传输时,缓存器的编号减小一个,4个像素依次写入对应缓存器的最低地址到最高地址,直到整个图像块读入完毕。
步骤33、当整个图像块传输完毕后,缓存器也都已经存满,此时已经准备好可以被图像块回写单元从内部缓存器读出后通过总线写回目标外部存储器。
其中将4乘4像素的图像块数据在180度旋转按照顺序和位置存储到内部缓存器的具体步骤如下(如图8所示):
步骤40、在第一次突发传输中,镜像旋转控制单元将前4个像素依次写入缓存器3的最高地址到最低地址;
步骤41、在第二次突发传输中,镜像旋转控制单元将前4个像素依次写入缓存器2的最高地址到最低地址;
步骤42、以此类推,每次突发传输时,缓存器的编号减小一个,4个像素依次写入对应缓存器的最高地址到最低地址,直到整个图像块读入完毕。
步骤43、当整个图像块传输完毕后,缓存器也都已经存满,此时已经准备好可以被图像块回写单元从内部缓存器读出后通过总线写回目标外部存储器。
接着图像块回写控制单元开始从内部缓存器读出处理后的图像块数据,其中由于原图像块数据在经过镜像旋转控制单元写入内部缓存器后,已经经过了旋转处理,所以不管是180度旋转还是X轴镜像Y轴镜像,图像块回写控制单元在从内部缓存器读取时,都是从缓存器0开始,地址从0到3的数据在通过总线回写目标外部存储器时构成一次突发传输,然后再读缓存器1中的地址从0到3的4个像素回写到目标外部存储器,一直到缓存器3从内部缓存器被读取并回写完毕后,该图像块处理完毕。
如图9所示,为本发明图像块回写控制单元x轴镜像对处理后的图像块进行回写的顺序示意图,其每个小框代表一个图像块,每个图像块中间的虚线代表图像块内部的像素读取顺序,每个横向的虚线箭头代表一次突发传输;由于图像块在原图像中的读取顺序为从上到下,从左到右;所以在X轴镜像后图像块的回写顺序变为上图所示的从上到下,从右到左。
其中所述图像块回写控制单元在x轴镜像对图像块回写时地址的计算和传输具体步骤如下:
步骤50、首次突发写传输的起始地址为处理后的图像起始地址加上一行像素的偏移地址再减去一次突发传输长度的偏移地址;
步骤51、在一个突发传输结束后,下一个突发传输的开始地址为上一次突发传输起始地址加上一行像素的地址偏移量值;
步骤52、在一个图像块回写完毕后,新的块的第一次突发传输起始地址为前一个图像块最后一次突发传输起始地址加上一行像素的地址偏移量;
步骤53、不断重复步骤51和步骤52的操作直到第一个块列的最后一个块传输完毕(块列意为将图像按块划分后,处于同一列的全部块);
步骤54、第二个块列开始的第一次突发传输起始地址为前一个块行第 一次突发传输起始地址减去一次突发传输长度的偏移地址;
步骤55、按照第一个块列的所有图像块的传输方式,传送第二个块列的所有图像块,直到第二个块列的所有图像块回写完毕;
步骤56、如此每个块列不断循环操作,直到整个图像被回写完毕。
如图10所示,为本发明图像块回写控制单元y轴镜像对处理后的图像块进行回写的顺序示意图,其每个小框代表一个图像块,每个图像块中间的虚线代表图像块内部的像素读取顺序,每个横向的虚线箭头代表一次突发传输;由于图像块在原图像中的读取顺序为从上到下,从左到右;所以在Y轴镜像后图像块的回写顺序变为上图所示的从下到上,从左到右。
其中所述图像块回写控制单元在y轴镜像对图像块回写时地址的计算和传输具体步骤如下:
步骤60、首次突发写传输的起始地址为:处理后的图像起始地址+(处理后的图像高度-1)×一行像素的偏移地址;
步骤61、在一个突发传输结束后,下一个突发传输的开始地址为上一次突发传输起始地址减去一行像素的地址偏移量;
步骤62、在一个图像块回写完毕后,新的块的第一次突发传输起始地址为前一个图像块最后一次突发传输起始地址减去一行像素的地址偏移量;
步骤63、不断重复步骤61和步骤62的操作直到第一个块列的最后一个块传输完毕(块列意为将图像按块划分后,处于同一列的全部块);
步骤64、第二个块列开始的第一次突发传输起始地址为前一个块行第一次突发传输起始地址加上一次突发传输长度的偏移地址;
步骤65、按照第一个块列的所有图像块的传输方式,传送第二个块列的所有图像块,直到第二个块列的所有图像块回写完毕;
步骤66、如此每个块列不断循环操作,直到整个图像被回写完毕。
如图11所示,为本发明图像块回写控制单元180度旋转对处理后的图像块进行回写的顺序示意图,其每个小框代表一个图像块,每个图像块中间的虚线代表图像块内部的像素读取顺序,每个横向的虚线箭头代表一次突发传输;由于图像块在原图像中的读取顺序为从上到下,从左到右;所以在 180度旋转后图像块的回写顺序变为上图所示的从下到上,从右到左。
其中所述图像块回写控制单元在180度旋转对图像块回写时地址的计算和传输具体步骤如下:
步骤70、首次突发写传输的起始地址为:处理后的图像起始地址+处理后的图像高度×一行像素的偏移地址-一次突发传输偏移地址;
步骤71、在一个突发传输结束后,下一个突发传输的开始地址为上一次突发传输起始地址减去一行像素的地址偏移量;
步骤72、在一个图像块回写完毕后,新的块的第一次突发传输起始地址为前一个图像块最后一次突发传输起始地址减去一行像素的地址偏移量;
步骤73、不断重复步骤71和步骤72的操作直到第一个块列的最后一个块传输完(块列意为将图像按块划分后,处于同一列的全部块);
步骤74、第二个块列开始的第一次突发传输起始地址为前一个块行第一次突发传输起始地址减去一次突发传输长度的偏移地址;
步骤75、按照第一个块列的所有图像块的传输方式,传送第二个块列的所有图像块,直到第二个块列的所有图像块回写完毕;
步骤76、如此每个块列不断循环操作,直到整个图像被回写完毕。
最后将每个图像块按照一定的读取顺序一个接一个的处理,直到整个图像处理完毕。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。