您的位置: turnitin查重官网> 计算机 >> 计算机病毒 >一个基于图片缝合纹理迁移算法设计和实现

一个基于图片缝合纹理迁移算法设计和实现

收藏本文 2024-04-19 点赞:17150 浏览:73008 作者:网友投稿原创标记本站原创

摘要:纹理综合是根据现有的一块小的输入纹理,然后通过某种算法,使之生成与小纹理类似的一块大纹理。一般要求两块纹理有较高的相似度,并且在视觉上没有生硬的拼接的感觉。此外还要求算法能有比较快的速度,有较强的实用性。图像缝合是一种快速的纹

摘自:毕业论文提纲格式www.udooo.com

理综合算法,现在已经有一些成熟的算法,它是在把输入纹理分块之后,然后在目标图像上根据相似度进行贴图,在贴图完成之后,再对块与块之间的边界进行调整,使之实现自然过渡。该文研究的是在VC++6.0环境下通过面向对象编程用图像缝合技术实现快速纹理综合。自己设计并实现了实验系统,验证了Alexei A. Efros和William T. Freeman的纹理缝合算法,取得比较好的实验结果。
关键词:纹理综合;图像缝合;算法;平滑过渡
1009-3044(2012)20-4974-03
An the Design and Implementation of the Algorithm of Image Quilting for Texture Synthesis
QIAO An-hong
(College of Mathematics and Information Engineering,Jiaxing University, Jiaxing 314001,China)
Abstract:According to a piece of the existing all input texture, use some sort of algorithm to generate a big texture similar as the all input texture. It generally requires that the two textures are with high texture similarity. The result texture should be without the visual sense of blunt splicing, and the algorithm can also achieve a relatively fast speed. Image quilting is a fast texture synthesis algorithm. There are a number of sophisticated algorithms about texture synthesis. The procedure is like that: dividing the input texture into the blocks, and then mapping in the target image according the similarity between the target image and the block. After completion of mapping, adjusts the boundary between the two conjoint blocks to achieve a natural transition. This study was conducted in VC + +6.0 environments using the object-oriented programming to test Alexei A. Efros and William T. Freeman’algorithm“Image Quilting for Texture Synthesis and Traner”. The experimental results show a relatively good effect.
Key words: database connection; pop-up menu; dynamic data window; information feedback
纹理综合是为了解决纹理映射中存在的接缝走样等问题而提出的,目前纹理合成方法可分为两类:
一类为过程纹理合成(PTS)。过程纹理合成通过对物理生成过程的仿真直接在曲面上生成纹理,如毛发、云雾、木纹等,从而避免了纹理映射带来的失真。这种方法可以获得非常逼真的纹理,但对每一种新的纹理,却需要调整参数反复测试,非常不便,有的甚至无法得到有效的参数。另一类为基于样图的纹理合成(texture synthesis from samples,TS)。TS技术是近几年迅速发展起来的一种新的纹理拼接技术,它基于给定的小区域纹理样本,按照表面的几何形状,拼合生成整个曲面的纹理,它在视觉上是相似而连续的。TS技术可以克服传统纹理映射方法的缺点,又避免了过程纹理合成调整参数的繁琐,因而受到越来越多研究人员的关注,成为计算机图形学、计算机视觉和图像处理领域的研究热点之一。利用TS技术还可以进行纹理填充(如修补破损的图片,重现原有图片效果),纹理传输,扩展到时域则可以用一短段视频图像,生成任意长度的非重复的视频动画等。
纹理技术作为数字图像处理的一个重要分支,不断与其它学科结合,发展速度日新月异。在图像编辑、数据压缩、网络数据的快速传输、大规模场景的生成以及真实感和非真实感绘制、档案的数字化保存、视频的索引和检索、物体3 D重建、军事侦察和取证、数码相机的超分辨处理等方面具有广泛的应用前景。具体表现如下:
1)基于颜色和纹理综合特征的车牌定位新方法。首先进行色彩分割,然后进行区域生成,最后从中分割出车牌。实验结果表明算法效果好、速度高,而且适用于对有噪声及复杂背景的车牌图像进行分割。
2)基于内容的图像检索。其主要是利用图像的特征,如:颜色直方图、纹理、形状等来进行检索,这种方式能够提高检索的效率与准确率。利用图像的颜色信息与利用快速傅立叶变换来提取纹理特征相结合的方法来进行图像检索,该方法一方面可以反映图像的全局特征,另一方面又反映了图像的局部特征,且具有对图像检索的旋转不变性。1纹理常见算法

1.1纹理算法的发展

Efros等在1999年首先提出了基于邻域匹配的逐点合成方法之后,Wei等和Ashikhmn对该方法进行了改进。虽然逐点合成的方式对于随机性较强的纹理达到了满意的合成效果,但它却难以有效合成结构性较强的纹理,合成速度也比较慢。
Xu等在2000年提出了随机块拼接的合成方法,即按块进行纹理合成,很好地提高了速度。Efros等在2001年提出了一种纹理的逐块合成方法,根据待合成块的邻域区搜索匹配块,采用最小误差路径法来实现各块的拼接。
Liang等也提出了类似的方法,只不过采用了“羽化”的方式来处理块与块问的重叠区。相比于逐点合成法,逐块合成法不但提高了速度,而且改善了对结构性较强纹理的合成效果。

1.2纹理常见算法

近几年,基于样图的纹理合成方法得到了迅速发展,它基于给定的小区域纹理样本,按照表面的几何形状,生成大范围的纹理,它在视觉上是相似而连续的。基于样图的纹理合成技术避免了过程纹理合成调整参数的繁琐,而且速度更快,适用的范围更广,已成为计算机图形学、计算机视觉和图像处理领域的研究热点之

一、其算法也层出不穷。

1)基于特征提取的纹理合成算法,该算法将纹理样图进行分层处理,一层是纹理上具有明显边界和完整形状的特征对象,一层是除去特征对象的背景。首先将纹理上的特征对象提取出来,然后用剩下的纹理合成背景,最后将提取的对象按照样本中的分布规律撒播在背景上来生成纹理。实验表明,这种算法能够较好地保证样本纹理中特征对象的完整性,合成效果比较理想。
2)基于不规则块的纹理合成方法。为了很好地保持纹理的边界结构特征,提出了一种利用人眼的视觉特性,采用不规则块、随机覆盖法和曲线最优匹配的纹理合成新方法。此方法分两个步骤:首先根据人眼的视觉特性,采用智能选择工具从样本纹理中抽取出具有明显边界特征的不规则块,然后采用随机覆盖法和曲线最优匹配法来决定如何把不规则块拷贝到目标纹理中和已有的合成方法相比,新方法能更好地保持纹理的边界结构特征。实验表明该方法可以快速高效地合成高质量的纹元式纹理。
2 BMP图片及24位真彩色

2.1 BMP图片

BMP是一种与硬件设备无关的图像文件格式,使用非常广。它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩。因此,BMP文件所占用的空间很大。BMP文件的图像深度可选lbit、4bit、8bit及24bit。BMP文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。

2.2 24位真彩色

一个颜色可以拆分成红绿蓝三元色,24真彩色就是依据这个划分,每种颜色用一个字节来表示.3*8=24 (16777216种颜色)。所以一个象素需要3个字节来表示,存储数据量应该是256片的3倍。即1406.25KB=1.3733MB左右。现在大多数的数字显示技术(如液晶显示屏)均采用24位色彩。在传输数据时是3个8位为一个红,绿,蓝组成的点传输的.然后每个点根据这些数字来产生

源于:论文格式www.udooo.com

不同的电压,由此产生丰富多彩的图像。
3算法实现工具

3.1 Visual c++6.0

Visual C++是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C++1.0后,随着其新版本的不断问世,Visual C++已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了Visual C++.NET(Visual C++7.0),但它的应用的很大的局限性,只适用于Windows 2000,Windows XP和Windows NT

4.0。所以实际中,更多的是以Visual C++6.0为平台。

Visual C++6.0不仅是一个C++编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrated development envi ronment,IDE)。Visual C++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。

3.2 C++语言

C++的设计目标,就是要让C++既具有适合于系统程序设计的C语言所具有的可适应性和高效性,又能在其程序组织结构方面具有像Simula那样的语言设施(Simula所支持的这种程序组织结构通常被称为面向对象程序设计风格)。在设计的时候,还做了很大的努力,使得引借自Simula的高层次的程序设计技术能够应用于系统程序设计之中。这即是说,C++所提供的抽象机制能够被应用于那些对效率和可适应性具有极高要求的程序设计任务之中。
C++的设计原则,C++的设计规则被分为基本规则、基于设计的规则、语言的技术性规则以及基于低层次程序设计的规则四个方面。
4实验与实现

4.1算法验证

此次实验验证的是Alexei A. Efros和William T. Freeman图像缝合和迁移算法。此算法的特点是高效、快速、有较强的实用性。

4.2实验步骤

1)导入小块的纹理图像(24位真彩色、bmp格式图片、90*90(为了方便处理选取30的倍数))。
2)将此纹理图片裁成等大小的若干块小纹理。
3)随机选择一块纹理,作为目标大纹理的起始块。
4)选取和第一块边缘相似度最高的纹理块,进行部分重叠贴图。
5)如此循环产生目标纹理。

4.3核心代码

1)导入及显示图片:
HANDLE CDib::LoadDIB(LPCTSTR lpFileName)//导入纹理图片
{HANDLE hDIB; //图像句柄
HANDLE hFile; //文件句柄
if((hFile = CreateFile(lpFileName,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NOR MAL|FILE_FLAG_SEQUENTIAL_SCAN,NULL))!= INVALID_HANDLE_VALUE)
{
hDIB = ReadDIBFile(hFile); //读取DIB文件
if(!hDIB)
AfxMessageBox("Read File Error"); //出错处理
CloseHandle(hFile); //关闭文件句柄
return hDIB; //返回包含文件信息头和数据区的图像句柄
}
return NULL;//返回空值
}
2)生成目标纹理:
//hSample为纹理样本,height,width为合成图像的高和宽
HANDLE CDib::ImgQuilting(HANDLE hSample,int height,int width) //样本纹理的高和宽
//由于下文将样本切分尺寸设定为30*30。所以为了方便切分,样本纹理尺寸最好取30的整数倍。
{
if(!hSample || height <0 || width <0) //出错处理
return NULL; //返回空值
//样本切分的尺度设定为W和H
const int W = 30;//宽:30px
const int H = 30;//高:30px
HANDLE hDst; //保存结果的图像句柄
LPBITMAPINFOHEADER lpbi; //信息头指针
LPBYTE lpS = this→FindDIBBits(hSample);//定义纹理样本数据段起始位置
int bytesPerLineS = this→BytePerLine(hSample);//纹理样本每行像素占用字节数
int w,h; //样本图像的宽和高
lpbi = (LPBITMAPINFOHE

摘自:毕业论文 格式www.udooo.com

ADER)GlobalLock(hSample);//锁定(lpbi指向文件信息头的内存中的地址)w = lpbi→biWidth;//给宽度赋值h = lpbi→biHeight; //给高度赋值
GlobalUnlock(hSample);//接触纹理样本锁定GlobalUnlock(hDst);//解除图像锁定return hDst;//返回图像句柄
5结束语
本次实验以bmp图像为例实现纹理缝合。通过导入不同的纹理图片,产生了和符合预期的目标纹理。充分验证了Alexei A. Efros和William T. Freeman图像缝合和迁移算法快速、高效和实用性。
参考文献:
侯捷.深入浅出MFC[M].2版.华中科技大学出版社,2001.
周长发.精通VC++图像处理编程[M].2版.北京:电子工业出版社,200

4.10.01

[3] Andrew Nealen,and Marc Alexa. Hybrid Texture Synthesis. Eurographics Symposium on Rendering 2003.
[4] Algorithms for solid noise synthesis. Computer Graphics (SIGGRAPH 89 Proc.), 1989,23(3):263-270.
[5] William T. Freeman. Image Quilting for Texture Synthesis and Traner. Proceedings SIGGRAPH 01, In Computer Graphics, Annual Con ference Series,2001.

copyright 2003-2024 Copyright©2020 Powered by 网络信息技术有限公司 备案号: 粤2017400971号