CN101114378A - 旋转位图图像的装置及方法 - Google Patents
旋转位图图像的装置及方法 Download PDFInfo
- Publication number
- CN101114378A CN101114378A CNA2007101039352A CN200710103935A CN101114378A CN 101114378 A CN101114378 A CN 101114378A CN A2007101039352 A CNA2007101039352 A CN A2007101039352A CN 200710103935 A CN200710103935 A CN 200710103935A CN 101114378 A CN101114378 A CN 101114378A
- Authority
- CN
- China
- Prior art keywords
- bitmap
- edge
- rotated
- source
- information
- 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
- 238000000034 method Methods 0.000 title claims abstract description 44
- 238000004364 calculation method Methods 0.000 claims abstract description 25
- 238000013507 mapping Methods 0.000 claims description 10
- 238000006243 chemical reaction Methods 0.000 abstract 1
- 238000004422 calculation algorithm Methods 0.000 description 13
- 230000009466 transformation Effects 0.000 description 11
- 238000011426 transformation method Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 239000000284 extract Substances 0.000 description 4
- 238000004088 simulation Methods 0.000 description 4
- 238000007796 conventional method Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N5/00—Details of television systems
- H04N5/14—Picture signal circuitry for video frequency region
- H04N5/20—Circuitry for controlling amplitude response
- H04N5/205—Circuitry for controlling amplitude response for correcting amplitude versus frequency characteristic
- H04N5/208—Circuitry for controlling amplitude response for correcting amplitude versus frequency characteristic for compensating for attenuation of high frequency components, e.g. crispening, aperture distortion correction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/60—Rotation of whole images or parts thereof
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N1/00—Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
- H04N1/40—Picture signal circuits
- H04N1/409—Edge or detail enhancement; Noise or error suppression
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Image Generation (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
提供了一种用于旋转位图图像的位图图像变换装置和方法。该装置包括:边缘信息计算器,用于使用位图信息计算关于与源位图的预定边缘相对应的旋转后的位图的边缘的信息;直线信息计算器,用于使用旋转后的位图的边缘信息来计算直线信息以生成旋转后的位图;以及位图生成器,用于使用旋转后的位图的边缘信息和直线信息来生成最终旋转后的位图。因此,可以增强位图图像旋转的计算速度。
Description
技术领域
本总发明构思涉及一种图像变换装置及其方法。更具体地,本总发明构思涉及采用Bresenham直线算法来旋转图像的图像变换装置及其图像变换方法。
背景技术
在图形应用、游戏程序、图像处理设备的驱动器、固件软件和硬件ASIC中,需要旋转位图图像以输出期望的图像。
图1图示了传统的位图旋转系统,图2图示了传统的位图旋转系统中的坐标变换误差。
图1中的传统的位图旋转系统包括源位图10、旋转引擎20、插补引擎30以及旋转后的位图40。
旋转引擎20使用公式1,根据源位图10的多个像素中的每一个的坐标(X,Y),计算一组新的坐标(X,Y)以产生旋转后的位图40,其中T是旋转的角度。
公式1
可以将公式1表达为公式2。
X=x×cos(T)-y×sin(T)
Y=x×sin(T)+y×cos(T)
公式1和公式2使用逆时针旋转来计算新的坐标。然而,由于传统的显示设备或打印设备使用顺时针旋转,所以应该使用顺时针的坐标变换公式。公式3示出了顺时针坐标变换公式。
公式3
X=x×cos(T)+y×sin(T)
Y=-x×sin(T)+y×cos(T)
可以通过将公式3应用到组成源位图10的像素来获得映射旋转后的位图40的坐标。因此,可以通过读取源位图10的像素、计算新坐标并利用新坐标存储源位图10的像素值来生成旋转后的位图40。
位图存在于整数坐标系统中,而在诸如公式3的坐标变换公式中使用的cos(T)和sin(T)通常是实数。因此,在计算新坐标时使用的值执行实数计算,从而,相当降低了数字计算的速度。
另外,由于计算后的新坐标也包括实数,所以并不是源位图10的每个像素的所有坐标都映射旋转后的位图40,并且源位图10的多个像素可能映射到旋转后的位图40的一个像素,如图2中所示。
在图2中,如果源位图10的两个像素映射到旋转后的位图40的一个像素,则旋转后的位图40就有一个黑像素(black pixel),其没有被从源位图10的任何像素映射到。
插补引擎30将插入算法应用于旋转后的位图40,以校正黑像素。然而,由于有插补引擎30执行的插入算法的特性,这可能导致在数字计算的速度上的降低。
因此,传统的位图旋转系统使用实数数据来为源位图10的所有像素执行计算,并且使用插入算法来执行后校正(after-correction),从而其耗费相当长的时间来计算位图旋转。
发明内容
本总发明构思提供一种通过将Bresenham直线算法应用于位图旋转而具有快速计算速度的图像变换装置及其图像变换方法。
本总发明构思的其他方面和效用将部分地在后面的描述中给出,以及将部分地从描述中显而易见,或者可以通过实践本总发明构思来学到。
本总发明构思的上述和/或其他方面可以通过提供一种用于旋转位图图像的装置来实现,该装置包括:边缘信息计算器,用于使用位图信息来计算关于与源位图的预定边缘相对应的旋转后的位图的边缘的信息;直线信息计算器,用于使用旋转后的位图的边缘信息来计算直线信息以生成旋转后的位图;以及位图生成器,用于使用旋转后的位图的边缘信息和直线信息来生成最终的旋转后的位图。
位图信息可以包括用于旋转源位图的旋转角度、源位图的大小、旋转后的位图的大小、源位图的色彩、对应于源位图的像素信息。
该装置还可以包括坐标提取器,其用于使用位图信息来提取源位图的边缘的角坐标(corner coordinate)。
边缘信息计算器可以根据下面的公式来计算旋转后的位图的边缘信息:
X=x×cos(T)+y×sin(T)
Y=-x×sin(T)+y×cos(T)
其中,(x,y)是源位图的边缘的角坐标,T是用于旋转源位图的旋转角度,(X,Y)是与源位图的边缘的角坐标相对应的旋转后的位图的边缘的角坐标。
源位图的边缘可以包括在源位图中彼此相邻的第一边缘和第二边缘。
边缘信息计算器可以计算与第一边缘和第二边缘的接触点(contactpoint)的坐标、第一边缘的另一角的坐标以及第二边缘的另一角的坐标相对应的第一角坐标、第二角坐标以及第三角坐标。
该装置还可以包括扩展表生成器,用于生成扩展表,其中,考虑源位图的大小和旋转后的位图的大小,将源位图的像素重复预定次数。
直线信息计算器可以计算边缘信息的Bresenham因数,并且参考Bresenham因数计算直线信息。
直线信息可以包括直线的运动方向和运动距离,以生成构成在旋转后的位图中彼此相邻的构成第三边缘和第四边缘的直线。
当运动方向改变的任何时候,直线信息计算器可以重新计算运动距离。
位图生成器可以重复将源位图映射到与沿着直线的运动方向的运动距离相对应的旋转后的位图的操作。
本总发明构思的上面和/或其他方面和效用也可以通过提供一种旋转位图图像的方法来实现,该方法包括:使用位图信息计算关于与源位图的预定边缘相对应的旋转后的位图的边缘的信息;使用旋转后的位图的边缘信息来计算直线信息以生成旋转后的位图;以及使用旋转后的位图的边缘信息和直线信息来生成最终的旋转后的位图。
位图信息可以包括用于旋转源位图的旋转角度、源位图的大小、旋转后的位图的大小、源位图的色彩、以及对应于源位图的像素信息。
该方法还包括使用位图信息来提取源位图的边缘的角坐标。
边缘信息的计算可以包括根据下面的公式计算的旋转后的位图的边缘信息:
X=x×cos(T)+y×sin(T)
Y=-x×sin(T)+y×cos(T)
其中,(x,y)是源位图的边缘的角坐标,T是用于旋转源位图的旋转角度,(X,Y)是与源位图的边缘的角坐标相对应的旋转后的位图的边缘的角坐标。
源位图的边缘可以包括在源位图中彼此相邻的第一边缘和第二边缘。
边缘信息的计算可以包括可以计算与第一边缘和第二边缘的接触点(contact point)的坐标、第一边缘的另一角的坐标以及第二边缘的另一角的坐标相对应的第一角坐标、第二角坐标以及第三角坐标。
该方法还可以包括生成扩展表,其中,考虑源位图的大小和旋转后的位图的大小,将源位图的像素重复预定次数。
直线信息的计算可以包括计算边缘信息的Bresenham因数,并且参考Bresenham因数计算直线信息。
直线信息可以包括直线运动的方向和直线运动的距离,以生成构成在旋转后的位图中彼此相邻的第三边缘和第四边缘的直线。
Bresenham因数的计算可以包括:计算直线运动的运动方向和直线运动的距离以生成构成在旋转后的位图中彼此相邻的第三边缘和第四边缘的直线。直线信息的计算还包括:当运动方向改变的任何时候,重新计算运动距离。
生成最终旋转后的位图可以包括:重复沿着直线运动方向将源位图映射到与运动距离相对应的旋转后的位图的操作。
本总发明构思的上述和/或其他方面和效用还可以通过提供一种用于旋转源位图的装置来实现,该装置包括:直线信息计算器,用于计算对应于源位图的旋转后的位图的边缘的Bresenham因数,以及用于参考Bresenham因数来计算直线信息;以及位图生成器,用于基于来自直线信息计算器的计算来生成最终旋转后的位图。
该位图生成器可以通过沿着水平方向和对角方向移动源位图的像素来生成最终旋转后的位图。
该装置还可以包括扩展表生成器,用于考虑源位图的大小和旋转后的位图的大小,生成其中源位图的像素被重复了预定次数的扩展表。
本总发明构思的上述和/或其他方面和效用还可以通过提供一种旋转源位图的方法来实现,该方法包括:计算对应于源位图的旋转后的位图的边缘的Bresenham因数;参考Bresenham因数来计算直线信息;以及基于所有计算生成最终旋转后的位图。
该方法还包括通过在水平方向和对角方向移动源位图的像素来生成最终旋转后的位图。
该方法还包括考虑源位图的大小和旋转后的位图的大小来生成扩展表,其中,源位图的像素被重复了预定次数。
附图说明
从以下结合附图的实施例的详细描述中,本总发明构思的这些和/或其他方面和效用将变得明显并且将更容易被理解,在附图中:
图1是图示传统的位图旋转系统的视图;
图2是图示传统的位图旋转系统中的坐标变换误差的视图;
图3是根据本总发明构思的示例性实施例的图像变换装置的方框图;
图4是图示源位图和旋转后的位图的示意图;
图5图示了整数坐标空间中的点的运动;
图6A-图6B图示直线(straight line)的位图映射结果;
图7图示整数坐标空间中的直线生成;
图8图示使用Bresenham直线算法的直线生成;
图9A-图9C图示由图3的扩展表生成器生成的扩展表;
图10图示由图3的位图生成器旋转的最终位图;以及
图11是图示根据本总发明构思的示例性实施例的图像变换方法的流程图。
贯穿附图,相同的附图标记将被理解为表示相同的元件、特征和结构。
具体实施方式
现在将详细参考本总发明构思的实施例,在附图中图示了其示例,在附图中自始至终相同附图标记表示相同元素。为了解释本总发明构思,下面通过参考附图来描述实施例。
图3是根据本总发明构思的示例性实施例的图像变换装置的方框图,图4是图示源位图和旋转后的位图的示意图。
在图3中,根据本总发明构思的示例性实施例的位图图像旋转装置100包括坐标提取器110、边缘信息计算器120、直线信息计算器130、扩展表生成器140以及位图生成器150。
参考图3和图4,坐标提取器110使用位图信息提取源位图200的一个边缘的角坐标,并且将角坐标提供给边缘信息计算器120。
位图信息可以包括用于旋转源位图200的旋转角度、源位图200的大小、旋转后的位图300的大小、源位图200的色彩以及对应于源位图200的像素信息。如果位图图像旋转装置100是计算机,则位图信息被从窗口图形设备接口(GDI)提供到坐标提取器110。
源位图200的某个边缘指在源位图200中彼此相邻的第一边缘和第二边缘。在图4中,源位图200的上边缘是第一边缘E1,在图中与第一边缘E1相邻的边缘是第二边缘E2。第一边缘E1和第二边缘E2彼此接触以形成角,所以角的坐标重叠。
因此,坐标提取器110提取第一边缘E1和第二边缘E2的接触点的坐标(x1,y1)、第一边缘E1的另一角的坐标(x2,y2)以及第二边缘E2的另一角的坐标(x3,y3)。
位图信息可以包括源位图200的第一边缘E1和第二边缘E2的其它角的坐标。因此,不需要坐标提取器110。
边缘信息计算器120使用位图信息或从坐标提取器110提供的边缘的角坐标来计算旋转后的位图300的、与源位图200的一个边缘相对应的边缘信息。
边缘信息计算器120使用公式4计算旋转后的位图300的边缘信息,其中,(x,y)是源位图200的一个角的坐标,T是用于旋转源位图200的旋转角,以及(X,Y)是旋转后的位图300的、与源位图200的边缘的角坐标相对应的角坐标。公式4解释顺时针坐标变换如下。
公式4
X=x×cos(T)+y×sin(T)
Y=-x×sin(T)+y×cos(T)
边缘信息计算器120使用由坐标提取器110提取的源位图200的边缘的角坐标,来计算旋转后的位图300的、与源位图200的角相对应的第一角坐标、第二角坐标以及第三角坐标。
边缘信息计算器120仅计算旋转后的位图300的、与源位图200的角相对应的第一角坐标、第二角坐标以及第三角坐标,所以当与计算所有像素的坐标的传统方法相比较时,根据本总发明构思的实施例的位图旋转计算的速度是相同的。
由坐标提取器110提取的坐标是第一边缘E1和第二边缘E2的接触点的坐标(x1,y1)、第一边缘E1的另一角的坐标(x2,y2)以及第二边缘E2的另一角的坐标(x3,y3)。因此,边缘信息计算器120使用公式4计算旋转后的位图300的第三边缘E3和第四边缘E3的角坐标(X1,Y1)、(X2,Y2)以及(X3,Y3)。
在公式5中列出了使用公式4在边缘信息计算器120中计算旋转后的位图300的第三边缘E3和第四边缘E4的角坐标(X1,Y1)、(X2,Y2)以及(X3,Y3)的方法。
旋转后的位图300的第三边缘E3和第四边缘E4是通过旋转源位图200的第一边缘E1和第二边缘E2而生成的边缘,并且因此分别对应于源位图200的第一边缘E1和第二边缘E2。此外,旋转后的位图300的第三边缘E3和第四边缘E4的每个角表示第一角、第二角以及第三角。
公式5
X1=x1×cos(T)+y1×sin(T)
Y1=-x1×sin(T)+y1×cos(T)
X2=x2×cos(T)+y2×sin(T)
Y2=-x2×sin(T)+y2×cos(T)
X3=x3×cos(T)+y3×sin(T)
Y3=-x3×sin(T)+y3×cos(T)
直线信息计算器130使用由边缘信息计算器120计算的旋转后的位图300的边缘信息,来计算旋转后的位图300的直线信息。直线信息包括直线的运动方向和运动距离,以生成构成在旋转后的位图中彼此相邻的第三边缘E3和第四边缘E4的直线。
直线信息计算器130可以计算对应于边缘信息的Bresenham因数,并且参考Bresenham因数计算直线信息。
此外,直线信息计算器130在每次直线的运动方向改变时都重新计算运动距离,并且应用重新计算的运动距离来生成最终旋转后的位图。
由直线信息计算器130使用Bresenham直线算法计算的Bresenham因数被用于旋转源位图200,这在下面参考图5-图7详细描述。
扩展表生成器140考虑位图信息中的源位图200的大小和旋转后的位图300的大小而生成扩展表,其中源位图200的像素被重复预定次数。下面参考图8详细描述扩展表生成器140。
位图生成器150使用由边缘信息计算器120计算的边缘信息(即,旋转后的位图的角坐标)和由直线信息计算器130计算的直线信息来生成最终旋转后的位图。
如果源位图200的大小与旋转后的位图300的比率为1∶1,则位图生成器150将源位图200的每个像素映射到旋转位图300的对应像素。然而,如果旋转位图300的大小大于源位图200的大小,则使用由扩展表生成器140生成的扩展表来将源位图200映射到旋转后的位图300。
位图生成器150重复通过沿着由直线信息计算器130确定的直线的运动方向运动与运动距离相对应的距离而将源位图200映射到旋转后的位图300的操作。下面参考图9详细描述位图生成器150。
图5图示了整数坐标空间中的点的运动,图6A-图6B图示了直线的位图映射结果,图7图示了整数坐标空间中的直线生成,图8图示使用brehensam直线算法所生成的直线。
参考图5-图8,描述了Bresenham直线算法,其确定在直线信息计算器130中被参考用来计算直线信息的Bresenham因数。
如在1965年的“Algorithms for computer control of a digitalplotter”中描述的,Bresenham直线生成包括如下方法,其中将由不执行实数计算而产生的提高的计算速度与传统直线生成方法进行比较。
此外,在1985年Bresenham发表的“Run length slice algorithms forincremental lines”中描述了具有在1965年发表的方法上增加的计算速度的方法。由直线信息计算器130计算的Bresenham因数遵循1985年发表的直线生成方法。因此,省略了1965年发表的直线生成方法,这里描述1985年发表的直线生成方法。
参考图5,从一点到另一点的运动可以是水平方向或对角线方向。
因此,如图5中所示,当前点A可以运动到点B或点C。直线的斜率可以具有小于Tan-1(1/2)的角度,并且连接点A到点B或连接点A到点C的直线从左到右开始,即增加x-值的方向。
基于上述前提,在图6B中图示了被用来绘制图6A中的直线的数字化的直线的位图存储器映射的结果。如图6B中所示,通过重复地在水平方向运动一定距离、在对角线方向运动一定距离、以及然后再在水平方向运动一定距离,来映射直线。如果对角线运动出现的规则已知的话,则可能比在1965年发表的直线生成方法中减少一些计算。
参考图6B,当像素具有初始坐标(Ai,i)时,如果另一像素的位置是(Ai+1,i+1),则执行对角线方向中的运动。当像素的y值增加值1时,y值增加并且出现对角线方向中的运动。
图7图示图5的整数坐标空间中的理想直线。通过选择坐标(Ai,i)之后的下一像素,而出现对角线方向中的运动。假设x轴坐标Ai具有介于0和dx之间的值,y轴坐标i具有介于0和dy之间的值,则可以使用公式6计算与x坐标Ai和Ai+1的中值相对应的y轴值bi。
公式6
如果将表示直线y=(dy/dx)x的公式代入利用bi表示y轴坐标的公式6,则可以使用公式7来计算x轴坐标,以表示在对角线方向中的运动之前的左手下方像素的x轴坐标。
公式7
由于x是根据变量i变化的实数,所以如果假设数字化的x值为Ai,则可以在图6中计算x值Ai。因此,将INT[x]定义为不超过x的最大整数。例如,INT[2.5]为2。下面在公式8中给出简化公式。
公式8
R=dx%dy,0≤R≤(dy-1)
R=dx%2dy,如果Q为偶数,则N=R,否则,N=R+dy
Ti=(N+2R)%2dy,0≤i≤(dy-1)
T0=N
如果(Ti+2R)<2dy,则Ti+1=2R
如果(Ti+2R)≥2dy,则Ti+1=2R-2dy
S0=0,
如果(Ti+2R)<0,则Si+1=Si。
如果(Ti+2R)≥2dy,则Si+1=Si+1。
可以使用公式8计算Ai,如公式9中所示。
公式9
可以使用公式9来计算图6中的水平运动距离Hi+1,如公式10所示。
公式10
Hi+1=Ai+1-Ai-1
可以从公式10导出公式11。
公式11
如果(Ti+2R)≥2dy,则Hi+1=Q。
如果(Ti+2R)<2dy,则Hi+1=Q-1。
因此,取决于(Ti+2R)和2dy的值,运动距离Hi+1可以为Q或Q-1。公式12基于Di,其确定水平运动的大小为(Ti+2R)-2dy。
公式12
如果Di<0,则使用Hi=Q-1并更新Di+1=Di+2R,或者
如果Di≥0,则使用Hi=Q并更新Di+1=Di+2R-2dy
D1=N+2R-2dy
可以使用公式13来计算初始点的运动距离H0。
公式13
可以使用公式14来计算最终点的运动距离Hdy。
公式14
如果N=0,则Hdy=dx-Ady-1-1=M-1,或者
如果N≠0,则Hdy=dx-Ady-1-1=M
上面公式基于作为Tan-1(1/2)的直线斜率。当直线斜率介于Tan-1(1/2)和45°之间时,上面假设可以推广到所有斜率。
通过将上面公式中的x和y进行交换,来允许将假设斜率介于0°和45°之间的上面公式应用于介于45°和90°之间的斜率,并且通过应用管理其它象限中的直线与介于0°和90°之间的直线的关系的对应规则来允许将上面公式应用于那些象限。
在满足条件dy<dx<2dy的直线中,Q通常为1以及M通常为0。这意味着水平运动通常为1或0,从而运动距离是没有意义的。
然而,具有介于0°和Tan-1(1/2)之间的dy/dx斜率的直线与具有介于Tan-1(1/2)和45°之间的dx/(dx-dy)斜率的直线完全对称。具有介于0°和Tan-1(1/2)之间的斜率的直线的水平运动和对角线运动与具有介于Tan-1(1/2)和45°之间的斜率的直线的水平运动和对角线运动完全对应。
图8图示通常的八分线(octant line),其在坐标(Xs,Ys)开始并且在坐标(Xt,Yt)结束。通过参考图8更容易解释使用图5-图7描述的Bresenham直线算法。
参考图3-图8,为了利用使用Bresenham直线算法计算的Bresenham因数来生成旋转后的位图300,直线信息计算器130可以计算直线信息。因此,可以使用Bresenham因数在旋转后的位图300的所有方向中生成直线。
图9A-图9C图示使用图3的扩展表生成器140生成的扩展表。
参考图3-图9C,如果源位图200和旋转后的位图300具有相同的宽度和高度,则不需要由扩展表生成器140生成扩展表。
然而,源位图200和旋转后的位图300不是总具有相同的宽度和高度。例如,打印机可以通过拉伸源位图200来生成旋转后的位图300。
图9A图示源位图200的一部分。扩展表生成器140扩展图9A的源位图200的该部分以变成扩展表,其中每个像素都重复预定次数,如图9B所示。由于生成扩展表的方法与用于缩小或扩展图像的传统的图像按比例缩放的方法相同,所以省略了该方法的详细描述。
如图9C中所示,旋转后的位图300的宽度对应于对角线的长度而不是如图9B中所示的13个像素。图9B的拉伸后的1个像素位图是在考虑了扩展表生成器140中的图9A的源位图的宽度和图9C的旋转后的位图的宽度的情况下生成的中间位图。即,图9B的具有宽度13的中间位图被映射到图9C的位图。在这种情况下,图9C的旋转后的位图的宽度不是13个像素。
扩展表生成器140通过考虑图9A的源位图的宽度与图9C的旋转后的位图的宽度的比率可以获得对应于图9A的每个像素的拉伸因数,以从图9A的源位图生成图9B的中间位图。
扩展表生成器140可以将拉伸因数存储在与图9A中图示的源位图一样宽的映射空间中。如果存储了值2、3、2、3和3,则可以使用与两次X1、三次X2、两次X3、三次X4和三次X5相对应的比率来生成图9B的中间位图。尽管在该示例性实施例中仅描述了x轴拉伸,但是也可以通过使用上述方法来获得用于拉伸y轴的像素值。
由扩展表生成器140生成的扩展表包括在旋转源位图200之前获得的信息,并且完全不影响位图旋转计算。因此,在旋转位图之后不需要传统的附加插补。
图10图示由图3的位图生成器150旋转的最终位图。
参考图3、图4和图10,位图生成器150将由扩展表生成器140生成的扩展表映射到旋转后的位图300。参考由边缘信息计算器120计算的旋转后的位图300的第一角坐标到第三角坐标(X1,Y1)、(X2,Y2)和(X3,Y3),位图生成器150沿着连接第一角到第三角的直线将扩展表与旋转后的位图300对应起来。
在图10中,直线S1连接第一角和第二角,并且沿着y轴位于直线S1之下一个像素的直线包括S2、S3、...、SH。同样,直线L1连接第一角和第三角,并且沿着X轴位于直线L1之右一个像素的直线包括L2、L3、...、LW。
位图生成器150参考由直线信息计算器130计算的Bresenham因数,基本上等于对应运动地在直线S1的方向上映射位图。图10图示在直线S1的方向上出现对角线运动的任何时候被更新为包括值4、5、6和3的运动距离。
位图生成器150沿着直线S1映射位图,然后沿着直线L1运动一个像素,然后再利用4、5、6和3的运动距离沿着直线S2映射位图。
即,位图生成器150在沿着水平直线S1的水平方向上映射4个像素、在对角线地运动1个像素之后水平地映射5个像素、在对角线地运动1个像素之后水平地映射6个像素、以及在对角线地运动1个像素之后水平地映射3个像素。随后,位图生成器150运动到直线S2以映射相同的运动距离。重复该过程直到直线SH。
在位图生成器150利用4、5、6和3的运动距离从直线S1到直线SH映射了所有位图之后,源位图200被变换为最终旋转后的位图300,其以如图4中所示的某个角度旋转。
图11是图示根据本总发明构思的图像变换方法的流程图。
此后,参考图3到图11描述根据本总发明构思的示例性实施例的图像变换方法。
坐标提取器110使用位图信息提取源位图200的某个边缘的角坐标。在操作S400中,坐标提取器110提取源位图200的第一边缘E1和第二边缘E2的角坐标(x1,y1)、(x2,y2)和(x3,y3)的每一对,如图4中所示。
在操作S410中,边缘信息计算器120使用位图信息或所提取的角坐标(x1,y1)、(x2,y2)和(x3,y3)来计算旋转后的位图300的边缘信息。此时,边缘信息计算器120使用公式4计算旋转后的位图300的边缘信息。参考图4,由边缘信息计算器120计算的旋转后的位图300的边缘信息包括坐标(X1,Y1)、(X2,Y2)和(X3,Y3)。
在操作S420中,直线信息计算器130使用所计算的旋转后的位图300的边缘信息来计算边缘信息的Bresenham因数,并且参考Bresenham因数确定用于位图映射的运动方向和运动距离。
在操作S430中,扩展表生成器140考虑到源位图200的大小和旋转后的位图300的大小而生成扩展表,其中源位图200的像素被重复一定次数。如果源位图200的大小和旋转后的位图300的大小的比率为1∶1,则不需要操作S430。
位图生成器150顺序地沿着直线S1、S2、S3、...、SH的方向将扩展表与旋转后的位图300相映射,如图10所示。在位图生成器150中生成最终旋转后的位图300遵循如图10中所示的相同的操作(S440)。
为了解释本总发明构思的效果,表1示出了在使用在1965年和1985年公开的Bresenham因数的位图旋转的情况下对计算速度进行仿真的结果。
仿真的第一条件包括位图的初始坐标为(0,0),并且通过改变最高行的位置来将仿真重复几次,以便增强可靠度。
仿真的第二条件包括对大约A4纸的1/4、2/4、3/4和4/4大小的位图进行仿真。A4纸具有大约4800像素的宽度和大约6400像素的高度。
仿真的第三条件包括对大位图进行仿真。例如,在该仿真中使用的位图具有20000宽和100000高。
仿真的第四条件包括对具有介于0°和45°之间的斜率的18-20个位图的旋转进行仿真,而每次按照半个位图的宽度来改变y坐标。
表1
单位:ms
位图大小 | 使用在1965年公开的Bresenham因数 | 使用在1985年公开的Bresenham因数 | 速度 |
1000×6000 | 721642688764 | 451515469392 | |
部分和 | 5886 | 3879 | 1.517401 |
2000*6000 | 1438142115121515 | 9841016956923 | |
部分和 | 5886 | 3879 | 1.517401 |
3000×6000 | 22522299 | 15921545 |
23602300 | 15311559 | ||
部分和 | 9211 | 6227 | 1.479203 |
4000*6000 | 3014303030793046 | 2111209520772079 | |
部分和 | 12169 | 8362 | 1.455274 |
20000×100000 | 254764253625255280253420 | 172079172344173564171689 | |
部分和 | 1017089 | 689676 | 1.474735 |
总和 | 1047170 | 709971 | 1.474948 |
可以通过重复根据上面四个条件的仿真来获得表1。如图1所示,使用在1985年公开的Bresenham因数具有比在1965年公开的Bresenham因数增加45%的计算速度。
使用上面的位图图像旋转方法的位图图像旋转装置可能是使用位图图像的宽范围的装置的任何一个,诸如多媒体显示装置、游戏的应用程序或者打印装置。
根据本总发明构思的位图图像旋转装置和位图图像旋转方法可以通过使用Bresenham直线算法执行位图旋转计算的整数计算,来提高位图图像的旋转计算速度。
尽管已经示出并描述了本总发明构思的一些实施例,但是本领域技术人员应该懂得:在不偏离本总发明构思的原理和精神的前提下,可以在这些实施例中作出改变,本总发明构思的范围由所附权利要求书及其等效物来限定。
Claims (29)
1.一种用来旋转位图图像的装置,该装置包括:
边缘信息计算器,用于使用位图信息计算关于与源位图的预定边缘相对应的旋转后的位图的边缘的信息;
直线信息计算器,用于使用所述旋转后的位图的边缘信息计算直线信息以生成旋转后的位图;以及
位图生成器,用于使用所述旋转后的位图和所述直线信息生成最终旋转后的位图。
2.如权利要求1所述的装置,其中所述位图信息包括:
旋转角度,用于旋转所述源位图;
所述源位图的大小;
所述旋转后的位图的大小;
所述源位图的色彩;以及
对应于所述源位图的像素信息。
3.如权利要求1所述的装置,还包括:
坐标提取器,用于使用所述位图信息提取所述源位图的边缘的角坐标。
4.如权利要求1所述的装置,其中所述边缘信息计算器根据下面的公式计算所述旋转后的位图的边缘信息:
X=x×cos(T)+y×sin(T)
Y=-x×sin(T)+y×cos(T)
其中(x,y)为所述源位图的边缘的角坐标,T是用于旋转源位图的旋转角度,以及(X,Y)是与所述源位图的边缘的角坐标相对应的所述旋转后的位图的边缘的角坐标。
5.如权利要求1所述的装置,其中所述源位图的边缘包括:
在所述源位图中彼此相邻的第一边缘和第二边缘。
6.如权利要求5所述的装置,其中所述边缘信息计算器计算与所述第一边缘和所述第二边缘的接触点的坐标、所述第一边缘的另一角的坐标、以及所述第二边缘的另一角的坐标相对应的第一角坐标、第二角坐标、以及第三角坐标。
7.如权利要求2所述的装置,还包括:
扩展表生成器,用于考虑所述源位图的大小和所述旋转后的位图的大小而生成扩展表,其中所述源位图的像素被重复预定次数。
8.如权利要求1所述的装置,其中所述直线信息计算器计算用于所述边缘信息的Bresenham因数,并且参考Bresenham因数计算所述直线信息。
9.如权利要求8所述的装置,其中所述直线信息包括:
直线的运动方向和运动距离,用于生成构成在所述旋转后的位图中彼此相邻的第三边缘和第四边缘的直线。
10.如权利要求9所述的装置,其中所述直线信息计算器在所述运动方向改变的任何时候都重新计算所述运动距离。
11.如权利要求10所述的装置,其中所述位图生成器沿着所述直线的运动方向与所述运动距离相对应地重复将所述源位图映射到所述旋转后的位图的操作。
12.一种旋转位图图像的方法,该方法包括:
使用位图信息计算关于与源位图的预定边缘相对应的旋转后的位图的边缘的信息;
使用所述旋转后的位图的边缘信息来计算直线信息,以生成所述旋转后的位图;以及
使用所述旋转后的位图的边缘信息和直线信息生成最终旋转后的位图。
13.如权利要求12所述的方法,其中所述位图信息包括:
用于旋转所述源位图的旋转角度;
所述源位图的大小;
所述旋转后的位图的大小;
所述源位图的色彩;以及
对应于所述源位图的像素信息。
14.如权利要求12所述的方法,还包括:
使用所述位图信息提取所述源位图的边缘的角坐标。
15.如权利要求12所述的方法,其中在所述计算边缘信息中,根据下面的公式计算所述旋转后的位图的边缘信息:
X=x×cos(T)+y×sin(T)
Y=-x×sin(T)+y×cos(T)
其中(x,y)为所述源位图的边缘的角坐标,T是用于旋转源位图的旋转角度,以及(X,Y)是与所述源位图的边缘的角坐标相对应的所述旋转后的位图的边缘的角坐标。
16.如权利要求12所述的方法,其中所述源位图的边缘包括:
在所述源位图中彼此相邻的第一边缘和第二边缘。
17.如权利要求16所述的方法,其中在所述计算边缘信息中,计算与所述第一边缘和所述第二边缘的接触点的坐标、所述第一边缘的另一角的坐标、以及所述第二边缘的另一角的坐标相对应的第一角坐标到第三角坐标。
18.如权利要求13所述的方法,还包括:
考虑所述源位图的大小和所述旋转后的位图的大小而生成扩展表,其中所述源位图的像素被重复预定次数。
19.如权利要求12所述的方法,其中所述计算直线信息包括:
计算用于所述边缘信息的Bresenham因数;以及
参考Bresenham因数计算所述直线信息。
20.如权利要求19所述的方法,其中所述直线信息包括:
直线的运动方向和运动距离,用于生成构成在所述旋转后的位图中彼此相邻的第三边缘和第四边缘的直线。
21.如权利要求19所述的方法,其中在所述计算Bresenham因数中,计算直线的运动方向和运动距离,以生成构成在旋转后的位图中彼此相邻的第三边缘和第四边缘的直线。
22.如权利要求21所述的方法,其中所述计算直线信息还包括:
在所述运动方向改变的任何时候都重新计算所述运动距离。
23.如权利要求22所述的方法,其中在所述生成最终旋转的位图的过程中,重复沿着所述直线的运动方向与所述运动距离相对应的将所述源位图映射到所述旋转后的位图的操作。
24.一种用于旋转源位图的装置,该装置包括:
直线信息计算器,用于计算用于与所述源位图相对应的旋转后的位图的边缘的Bresenham因数,以及用于参考所述Bresenham因数计算直线信息;以及
位图生成器,用于基于来自所述直线信息计算器的计算结果而生成最终旋转后的位图。
25.如权利要求24所述的装置,其中所述位图生成器通过在水平方向和对角线方向移动所述源位图的像素来生成所述最终旋转后的位图。
26.如权利要求25所述的装置,还包括:
扩展表生成器,用于考虑所述源位图的大小和所述旋转后的位图的大小来生成扩展表,其中所述源位图的像素被重复预定次数。
27.一种旋转源位图的方法,该方法包括:
计算用于与所述源位图相对应的旋转后的位图的边缘的Bresenham因数;
参考所述Bresenham因数计算直线信息;以及
基于所有计算结果,生成最终旋转后的位图。
28.如权利要求27所述的方法,还包括:
通过在水平方向和对角线方向运动所述源位图的像素,来生成所述最终旋转后的位图。
29.如权利要求28所述的方法,还包括:
考虑所述源位图的大小和所述旋转后的位图的大小而生成扩展表,其中所述源位图的像素被重复预定次数。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020060069613A KR20080009870A (ko) | 2006-07-25 | 2006-07-25 | 비트맵 이미지 회전 장치 및 그 방법 |
KR69613/06 | 2006-07-25 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101114378A true CN101114378A (zh) | 2008-01-30 |
Family
ID=38986387
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007101039352A Pending CN101114378A (zh) | 2006-07-25 | 2007-05-15 | 旋转位图图像的装置及方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20080025641A1 (zh) |
KR (1) | KR20080009870A (zh) |
CN (1) | CN101114378A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104281451A (zh) * | 2014-09-18 | 2015-01-14 | 用友优普信息技术有限公司 | 旋转标签的创建方法和旋转标签的创建系统 |
CN106780352A (zh) * | 2016-12-16 | 2017-05-31 | 珠海赛纳打印科技股份有限公司 | 图像旋转方法、装置及图像形成设备 |
CN114356256A (zh) * | 2022-01-06 | 2022-04-15 | 珠海奔图电子有限公司 | 一种图像处理方法、设备终端及存储介质 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8463074B2 (en) * | 2009-11-11 | 2013-06-11 | General Dynamics Advanced Information Systems | System and method for rotating images |
US8624911B1 (en) * | 2011-01-05 | 2014-01-07 | Google Inc. | Texture-based polygon antialiasing |
GB2527033A (en) | 2014-06-02 | 2015-12-16 | Nokia Technologies Oy | A method and technical equipment for image processing |
CN107680046A (zh) * | 2017-07-25 | 2018-02-09 | 平安科技(深圳)有限公司 | 影像矫正方法、装置、存储介质和计算机设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3419063A1 (de) * | 1983-05-23 | 1984-11-29 | Hitachi, Ltd., Tokio/Tokyo | Verarbeitungsverfahren fuer die drehung eines bildes |
JPS61199175A (ja) * | 1985-02-28 | 1986-09-03 | Mitsubishi Electric Corp | イメ−ジの任意角度回転方式 |
JPH02287684A (ja) * | 1989-04-28 | 1990-11-27 | Ibm Japan Ltd | イメージ処理装置および方法 |
JPH0455986A (ja) * | 1990-06-26 | 1992-02-24 | Toshiba Corp | 画像処理装置 |
US6097855A (en) * | 1993-02-19 | 2000-08-01 | Levien; Raphael L. | Method and apparatus for image rotation |
-
2006
- 2006-07-25 KR KR1020060069613A patent/KR20080009870A/ko not_active Application Discontinuation
-
2007
- 2007-02-13 US US11/705,512 patent/US20080025641A1/en not_active Abandoned
- 2007-05-15 CN CNA2007101039352A patent/CN101114378A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104281451A (zh) * | 2014-09-18 | 2015-01-14 | 用友优普信息技术有限公司 | 旋转标签的创建方法和旋转标签的创建系统 |
CN104281451B (zh) * | 2014-09-18 | 2017-11-28 | 用友优普信息技术有限公司 | 旋转标签的创建方法和旋转标签的创建系统 |
CN106780352A (zh) * | 2016-12-16 | 2017-05-31 | 珠海赛纳打印科技股份有限公司 | 图像旋转方法、装置及图像形成设备 |
CN106780352B (zh) * | 2016-12-16 | 2020-06-09 | 珠海赛纳打印科技股份有限公司 | 图像旋转方法、装置及图像形成设备 |
CN114356256A (zh) * | 2022-01-06 | 2022-04-15 | 珠海奔图电子有限公司 | 一种图像处理方法、设备终端及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20080025641A1 (en) | 2008-01-31 |
KR20080009870A (ko) | 2008-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101114378A (zh) | 旋转位图图像的装置及方法 | |
US4975976A (en) | Image transformation method and device | |
EP1004988B1 (en) | Method, apparatus and computer program product for generating perspective corrected data from warped information | |
CN113064540B (zh) | 基于游戏的绘制方法、绘制装置、电子设备及存储介质 | |
CN102087751B (zh) | 计算各向异性滤波的细节等级 | |
US7554546B1 (en) | Stippled lines using direct distance evaluation | |
US8379058B2 (en) | Methods and apparatuses to arbitrarily transform windows | |
CN112233215A (zh) | 轮廓渲染方法、装置、设备及存储介质 | |
US20060038835A1 (en) | Method of realising a boundary of a rotated object | |
US7956861B2 (en) | Method for checkerboard-based vector to raster conversion | |
WO2009104218A1 (ja) | 地図表示装置 | |
JP3037854B2 (ja) | 文字生成方法及びその装置 | |
JP5777726B2 (ja) | 描画装置及び描画プログラム | |
JP2634851B2 (ja) | 画像処理装置 | |
JP6297169B2 (ja) | 描画装置、および描画方法 | |
CN102074004B (zh) | 空间实体遮挡类型的判定方法及装置 | |
US20040169655A1 (en) | Active region determination for line generation in regionalized rasterizer displays | |
JP4740956B2 (ja) | 3次元グラフィック装置、3次元グラフィック方法、3次元グラフィックプログラム、および記録媒体 | |
US5355451A (en) | Graphic processing unit | |
CN113096217A (zh) | 图片生成方法、装置、电子设备以及存储介质 | |
JP2878614B2 (ja) | 画像合成方法及び装置 | |
WO2002031981A1 (en) | Compressed and scaleable outline font | |
US6791547B2 (en) | Auxiliary active region determination for line width generation in regionalized rasterizer displays | |
JP2010140101A (ja) | 描画装置 | |
JP3517982B2 (ja) | 図形描画装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |