传奇BMP图像切割存储技术与实现 |
|
作者:去玩变态 文章来源:Www.75bt.com |
|
| 。·实用第一智慧密集图像切割存储技术与实现刘亚姝严寒冰摘要:在实时图像采集系统中,经常需将图像切割后再输出。文中给出了对采集到的图像进行自动切割存储的完整解决方案及代码。关键词:图像;切割;;++1引言在实际应用中,经常需要将图像感兴趣的部分切割下来单独存储。 画笔、等工具软件固然可以用来完成这项工作,但如果要求实时对采集的图像序列进行切割、存储,手工处理就不能胜任了。针对图像,给出了对图像进行切割、存储的方法。即:给定一张原始图像和图像上的一个矩形.将图像上矩形范围内的部分切割下来,并存储在指定的图像文件中。 由于文件中有多种索引格式的存在,因此这项工作的难点是如何准确计算各种索引格式下切割后图像像素在新文件中的存储位置。文中将原始图像称为原图像,185升级版切割后保存的图像称为目标图像。2图像的格式是的标准位图格式.该格式是与硬件设备无关的存储格式。一个文件中包含一个完整的。 文件由3部分数据块组成如图所示:位图文件头、位图信息头、像素区。保存文件的类型、大小信息,中保存图像的颜色、维数等信息;如果图像是索引图像.在的结尾还要存储调色板信息;中存放图像的像素信息。中有与、对应的同名结构,中有对这些结构的成员有详细介绍.在此不再详述.只介绍与本文内容密切相关的部分。常用的存储格式有真彩图和、4、8位索引图.对应于结构中的数值分别是24、4、8,它表示保存一个像素所需要的比特数。真彩图用24位(3个字节)保存每个像素的颜色信息,其中各用8位代表红、绿、蓝(、)三种颜色分量,每种颜色分量可表示为255级,真彩图不需使用调色板。索引图是指将颜色信息做成索引.保存在凋色板中。 记录像素颜色信息只需保存相应的颜色索引.可以大大减少像素信息存储所占用的空间。 调色板信62:盯剧丁拍只~日(')州=1(1.4.8.1624,32)睛(0).(酬|)(0002164-2568-32001“4-图1文件格式息保存在后.调色板中每种颜色占用32位。1位索引图中保存每个像素的颜色索引使用1个比特.因此位索引图只有2种颜色。同理,4、8位索引图分别使用16种和256种颜色。因此。实际上代表了图像的类型。在中存放像素信息时,从图像的最下一行开始向上逐行存储.每一行像素所占用的字节数必须是4的倍数。如果所占用的字节数不满足4的倍数。 需要在其后填充补足,一般在后面直接补0。在做图像切割、存储时.一般不需要改变图像的颜色格式。即真彩图依旧是真彩图,索引图仍然是索引图。综合上面的图像格式的相关知识.可以得出结论:在做图像切割、存储时,新图像的、部分只需将原图像相关部分拷贝过来做少量修改即可。需要做较多修改的是部分。对索引图而言,每个像素保存的起始比特位置可能不是一个字节起始比特位,像素的终止比特位可能也不是一个字节的末比特位。因.此在对进行修改时,需要对字节的位进行修改。类实现了对图像文件的读取和显示。以该类为基础。 在该类的基础上扩展得到对图像切割、存储的功能。 3算法概述切割图像的矩我认为不是方便形用两个对象定义,分别代表举行左上角和右下角(—)顶点位置。算法的总体流程如图2所示。图2算法流程图为实现以上算法.为类添加了以下6个函数:::(,—,+)::《.)00::(.—,—.,—.—.11.)::(—,—,11,13--相关文章推荐:C17创意竞赛启动爱普生携博世、瓷微科技定义智能明天,,)::::(,)其中,是主体函数.实现对图像的切割和输出,其他5个函数直接或间接被该甬数调用。4算法实现4.1函数,—:切割矩形的左上顶点—:切割矩形的右下顶点:修改后图形的输出文件::(..,)(1)修改结构:.=0442;=4-);.=:.=.2=:.=4-)+—:∥(2)修改结构,存储时需要的字节数,每行需要拷贝的字节数,偏移量∥原始图像的每行的起始字节、起始位,行末终止字节、终止位—.。.—;原图像每行占的字节数、目标图像每行字节数,切割后图像的|湍霞—,—,—;,由原图像的、切割矩形的左上、右下顶点位置,计算切割图像所需要的相关参数(—一,—,—,.):每次从原图像向目标图像拷贝时需处理的字节数=—4-1:=—-;将原图像的信息拷贝至新图像—13;11=.—;=;(—.—,—.);对目标图像的高、宽、像素区大小等信息进行修改—-=11一.—.4-1:—一=—.—.4-1:—-=.一;,(3)对像素区进行逐行拷贝,并对每行拷贝结果进行偏移—。—,—;,。,一、.箜。·实用第一智慧密集-·-·-·-·-·-一—=—一;:(=—.:=—.;-)—=—+—一1一)++;—=—+(—.—)。;(—,.—,13):∥(4)输出目标图像一“,);一(—,);-(—,—一);该函数是切割保存图像功能的主函数。:矩形左上角位置;—:矩形右下角位置;:输出目标图像文件的文件指针。该函数共分为4部分.修改、以及输出目标图像,如程序中标注所示。各部分需要注意的地方如下:(1)中,不参与显示,一般不用修改。(2)函数获得了原图像、目标网像的相关参数及原图像与目标图像间关系的参数.下面在对该函数的定义有详细介绍。(—,—,);将原图像的拷贝过来修改后供目标图像使用。随后对该结构中目标图像的高、宽、像素区大小等信息进行了修改。 (3)—=—一;创建了目标图像的像素区。(,);利用函数获得的相关参数,对目标图像进行逐行拷贝.该函数中包含对像索的移位操作。(4)将目标图像中的3部分内容写到目标图像文件中。4.2函数∥由原图像的、切割矩形的左上、右下顶点位置,计算切割图像所需要的相关参数:图像类型:—:切割矩形左上顶点:—:切割矩形右下顶点::切割矩形左上顶点在原图相应行中的字节位置::切割矩形左上真免费装备顶点的起始位在—中的位置;—:切割矩形右下顶点在原图,相应行中的字节位置::切割矩形右下顶点的起始位∥在中的位置::源图像每行使用的64,字节数::目标图像每行使用的字节数::(.—,—,[.,13,.,).;=—一;13=—.—.+1:∥原图像每行字节数=(.);∥目标图像每行字节数=(.);,1位索引图1:=—.8:=.%8:=—.8:=.%8:;4位索引图4:=—.2;=(—.%2)4:—=—8.2;—=—.%2)4+3:;∥8位索引图8:=—.:=0:—=—.:=7:;真彩图24:[=—.。3:=:13=—.。3+2:=7:;;)该函数计算原图像、目标图像的相关参数。:同中的;—:矩形左上角位置;—:矩形右下角位置;、:目标图像中每行起始像素的第位在原图像中的位置相对于原图像中该行像素起始位置的字节偏移量,该位在原图像中所在字节的位偏移垦;—、—:目标图像中每行末尾像素的最末匿獗巍蓟夏延司兰二:—==一:一====!—::一=:一-一-一一-一一-·-,-,-·-一一一一·一-,-一-一一-·-一-·-位在原图像中的位置相对于原图像中该行像这是好玩家素起始位置的字节偏移量,该位在原图像中所在字节的位偏移量;:原图像中每行占用的字节数;:目标图像中每行占用的字节数。4.3函数,由图像类型和图像宽度,计算一行图像所占的字节数∥(返回值)::(.—)—;一位索引图1:—%32==0)=8;=(32+1)4:;4位索引图4:(—%8==0)=—2:—=(8+1)4;;8位索引图8:(%4==0)—=—;—=《—4+1)+4:;“∥真彩图24:((—+3)%4==0)—=+3:—=(。34+1)+4:;:(“。 ):一1:);)该函数根据图像宽度,返回一行图像所占的字节数。 :同中的,:图像中每行的像素数。 该函数的关键足保证每行像素占用的字节数是4的倍数。4.4函数将源图像的一行拷到目标图像中::(—,丁—,..)(—)(““):;'—,—;∥临时数据区—=—;(—,—,—);—=(—);∥后的位赋0(—+—-1)=—;∥调用数组移位操作函数(~,)∥需拷贝最后一个字节(=+1)(—,—。);∥移位后,最后一个字节的内容都已移到前一字节中《—,—,-1):—;:)该函数将原图像在切割矩形内的一行数据拷到目标图像中。为处理切割矩形中每行起始像素的起始位不是原羽像中所在字节起始位的情况(不为0),先将该行数据拷到临时数据区111一,将该行数据进行处理后,再拷贝到目标图像中。—:目标图像该行在原图像中的起始位置;—:目标图像该行的起始位置;:该行起始位在原图像中相应字节中的位置::该行末位在原罔像中相应字节中的位置::目标图像中每行占用的字节数。(,—,);将原图像中与目标图像某行相关的像素拷贝到临时数组中。4(+—一1)=—;将临时数组中对应目标图像某行最后1位后的内容清0。该操作不是必须的。 值得注意的是:在很多情况下,每行起始像素的起始位可能不是所在字节的起始位(不为0),这时需要对每行数据进行左移操作,以便使在目标图像中的每行起始像素的起始位都在所在字节的第一位,函数即起左移作用。进行了移位操作后。 临时数组中的最后一个字节有可能变成了空字节。 因此,在将临时数组拷贝到目标图像时.需根据情况决定是否拷贝最后一个字节。 65),实用第一智慧密集.....。4.5函数,得到位操作时的常量,的前位(从位开始,0-7)为1,后续为:::080;1:;2:;3:00;4:08;5:;6:0;7:;:一1:)该函数获得位运算的一些常量。由值决定返回值中起始位为的位数。如=,返回00000000;=1,返回10000000:=2,返回11000000。 依次类推。 4.6函数::(,.)(—0—8)(“:.。):;(—==0:—;:(=0:一1:++(《1—+)=—;—=(—++1):—=(8一—);(+);)+(1-+—-1)=;;该函数对数组进行左移位运算。:数组66指针;:数组长度;:移位次数。如2个的数组0011010010111111左移3位后变成:11010010100。 5代码使用类中已提供文件的读人函数。用该函数读人一张图像生成实例.给定切割图像的左上、右下顶点位置和目标图像文件指针后。 在实例中调用函数,即可将原图像在矩形范围内的位图保存在目标图像文件中。图3是切割图像的实例。图36结语文中分析了图像的存储原理和存储格式.通过扩展一常用的类,给出了对罔像进行切割的方法和代码。测试结果表明,代码工作稳定,工作效率高,可以实现对实时采集图像的实时切割。 参考文献1.著,潘爱民泽.++技术内幕.第4版,清华大学出版社,2001.[2公司.6.0.1998.33公司.2005.北京市教委科技计划项目,项目编号为200710016001(收稿日期:2009—2—8)图像切割存储技术与实现作者:刘亚姝,严寒冰作者单位:刊名:电脑编程技巧与维护英文刊名:年,卷(期):2009(17)被引用次数:1次参考盛大战甲文献(3条)1.公司6.019982.;潘爱民++技术内幕20013.公司2005引证文献(1条)1.朱绍文.陈光喜一种简单的基于字符形状的验证码识别技术[期刊论文-桂林电子科技大学学报2010(1)。 |
|
| 上一篇:矿井涌水量计算的非稳定流解析法 | 下一篇:FrontPage2002中的文字变色效果 |
Copyright 2009-2012 Www.75bt.Com All Rights Reserved
声明:本站发布的所有传奇超级变态传奇65535站信息完全由本站收集于国内网络,请玩家仔细选择进入游戏!