图像处理新技术的问题解答和图像旋转放大的matlab程序文档格式.docx

上传人:b****6 文档编号:20203411 上传时间:2023-01-18 格式:DOCX 页数:16 大小:24.75KB
下载 相关 举报
图像处理新技术的问题解答和图像旋转放大的matlab程序文档格式.docx_第1页
第1页 / 共16页
图像处理新技术的问题解答和图像旋转放大的matlab程序文档格式.docx_第2页
第2页 / 共16页
图像处理新技术的问题解答和图像旋转放大的matlab程序文档格式.docx_第3页
第3页 / 共16页
图像处理新技术的问题解答和图像旋转放大的matlab程序文档格式.docx_第4页
第4页 / 共16页
图像处理新技术的问题解答和图像旋转放大的matlab程序文档格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

图像处理新技术的问题解答和图像旋转放大的matlab程序文档格式.docx

《图像处理新技术的问题解答和图像旋转放大的matlab程序文档格式.docx》由会员分享,可在线阅读,更多相关《图像处理新技术的问题解答和图像旋转放大的matlab程序文档格式.docx(16页珍藏版)》请在冰豆网上搜索。

图像处理新技术的问题解答和图像旋转放大的matlab程序文档格式.docx

=|纯文本扩充:

=图象描述符局部色表图象数据:

=应用扩充|注释扩充gif数据流中的数据块可以分为三组:

控制块、成象块和特殊用途块。

控制块,如:

头部、逻辑视屏描述块、图像控制扩充和尾记录,包含用于控制处理数据流或设置硬件参数的信息。

成像块,如:

图像描述符和纯文本扩充,包含用于在显示设备上成像的信息和数据。

特殊用途块,如:

注释扩充和应用扩充,包含那些既不用于处理数据流也不用于在显示设备上成象的信息。

除了逻辑视屏描述块和全局色表之外,特殊用途块的作用域是整个数据流,而其他控制块的作用域是有限的,仅限于对他们后面的成象块起作用。

特殊用途块不对任何控制块构成限制,它对于解码过程来说是透明的。

成象块及扩充用于控制块及扩充的作用域限定。

块的标记分为三段:

除尾记录0x3b之外,0x000x7f用于成象块;

0x800xf9用于控制块;

0xfa0xff用于特殊用途块。

解码器通过识别块标记来处理块的作用域。

解释:

色表-gif格式利用色表来显示基于光栅的图像。

色表分为全局色表和局部色表。

全局色表对于那些没有设置局部色表的图像起作用。

全局色表的作用域是整个数据流。

局部色表对于紧接在其后的单张图像起作用。

这两种色表都是可选的。

全局色表这东西是我们感兴趣的东西,它有点像png格式定义种的调色板,如果要修改gif图片的颜色,哈哈,修改这个全局色表就可以.如果有全局色表块,那么它一定从gif流的14个字节开始(头部6个+逻辑视频描述块7个)。

以下是各数据块的说明,如果注明为版本89a的话,则说明这个数据块不会在87a版的协议中出现.头部(6个字节)标识符(3字节)-GIF版本(3字节)-87a(or89a)逻辑视屏描述块逻辑屏幕宽(2字节)逻辑屏幕高(2字节)PackedFields(1字节)背景色索引(1字节)象素高宽比(1字节)PackedFields说明:

全局色表标志1Bit颜色方案3Bits短标志1Bit全局色表尺寸3Bits解释:

背景颜色索引-为背景颜色指向全局色表。

背景颜色是指那些没有背图像覆盖的视屏部分的颜色。

若全局色表标志位置为0,则该字段也被值0,并且被忽略。

象素高宽比-用于计算原图像中像素的近似高宽比。

如果该字段的值为非0,则象素的高宽比由下面的公式计算:

高宽比=(象素高宽比+15)/64该字段的取值范围从最宽的比值4:

1到最高的比值1:

4,递增的步幅为1/64。

取值:

0-没有比值,1255-用于计算的值。

全局色表标志-指示有没有全局色表,如果该标志位置1,则全局色表会紧接在该块之后出现。

该位也用于解释是否选用背景颜色索引字段。

若该位置1,则背景颜色索引字段的值将指向背景颜色表。

色彩方案-提供给原始图像的每个颜色的位数减1。

这个值代表图像中所使用的整个调色板的大小,而不是图像中所使用的颜色的数量。

例如,若该字段的值为3,则图像中所使用的调色板的每个色值占4位。

短标志-表明全局色表是否被排序。

如果该位置1,则全局色表按照重要性递减的原则进行了排序。

典型地,是按照颜色的使用频度进行递减排序,使用频度最高的颜色排在色表的最前面。

这样便可帮助解码器选择最好的颜色子集来成象。

全局色表的尺寸-如果全局色表标志位置1,则该字段的值记录全局色表中所占用的字节数。

全局色表该块包含一个按照字节顺序表示红-绿-蓝三元色的色表。

全局色表用于那些没有局部色表的图像和纯文本扩充。

在逻辑视屏描述块中的全局色表标志位置1时表示有全局色表。

全局色表紧接在逻辑视屏描述块之后,占用的字节数为:

3*2(全局色表尺寸+1)数据组成格式为:

Red0Green0Blue0RednGreennBluen图像控制扩充(版本-89a)图像控制扩充包含在处理一个成象块时所需的参数。

扩充只包括一个数据子块。

该块是可选的。

通常只有一个图像控制扩充在成象块之前。

这也是在一个数据流中对成象控制扩充的唯一限制。

数据组成格式为:

扩充导入符(1字节)图象控制标记(1字节)块尺寸(1字节)延长时间(2字节)透明颜色索引(1字节)块结束(1字节)PackedFields说明:

保留3Bits配置方法3Bits用户输入标志1Bit透明颜色标志1Bit解释:

扩充引入-用于识别一个扩充块的开始,该字段为固定值0x21。

图像控制标号-识别当前块是否为图形控制扩充。

该字段为固定值0xF9。

块尺寸-块中所包含的字节数。

从块尺寸字段开始到快结束符(不含结束符)。

该字段包含固定值4。

配置方法-指示图像显示后的处理方法。

值:

0-无指定的配置,解码器不需要做任何处理。

1-不做配值。

图像将被留在原位置。

2-恢复背景颜色。

图像所占的区域必须备恢复为背景颜色。

3-恢复以前的颜色。

解码器需要将图像区域恢复为原来成象的颜色。

4-7-未定义。

用户输入标志-说明在继续处理之前是否需要用户输入。

可以和输入延时一起使用。

透明标志-表明在透明索引字段是否给定透明索引。

延时-如果不为0,该字段指定以1/100秒为单位的时延数。

透明索引-如果遇到透明索引,则显示设备的相关象素不被改变,继续处理下一个象素。

块终止符-这个0长度字段标志着图像控制扩充得结束。

图像描述符每一幅图像必须在逻辑视屏描述块中所定义的逻辑视屏界限之内。

图像描述符包含处理一个基于图像的表的必要参数。

在这个块中给定的坐标是参照逻辑视屏的像素坐标。

该块是一个成象块,在其前面可以选择加上一个或多个控制块,如:

图像控制扩充,或者是后面接有局部色表;

图像描述符后面总是图像数据。

它是一幅图所必需的。

一幅图像对应一个图像描述符。

图象分隔符(1字节)图象左坐标(2字节)图象顶坐标(2字节)图象宽度(2字节)图象高度(2字节)(2字节)(1字节)PackedFields说明:

局部色表标志1Bit隔行处理标志1Bit短标志1Bit保留2Bits局部色表尺寸3Bits解释:

图像分隔符-用于识别图像描述符的开始。

取固定值0x2c局部色表该块包含一个按照红-绿-兰三原色的顺序排列的色表。

该表作用于紧跟其后的图像数据。

当局不色表标志位置1时,该表出现,且其后紧跟图像的描述符,它所包含的字节数等于3*2(局部色表尺寸+1)数据组成格式为:

Red0Green0Blue0RednGreennBluen基于表的图像数据基于表的图像数据由一系列子块组成,每个子块最多255字节,包含一个为图中每个象素所指定的有效色表的索引。

索引的顺序用LZW算法进行编码。

LZW最小编码尺寸(1字节)图象数据数据子块(n字节)解释:

LZW最小编码尺寸:

该字节用于决定在图像数据中用LZW编码最初的位数。

注释扩充(版本-89a)注释扩充包含实际不属于gif数据流的文本信息。

它适用于包括图像注释、描述或者任何其他非控制和非图像数据。

注释扩充将被解码器忽略,或者被保留到以后处理。

在任何情况下注释扩充也不能中断对数据流的处理。

该块是可选的;

在数据流中的出现量不加限制。

扩充导入符(1字节)注释标记(1字节)注释数据数据子块(n字节)块结束符(1字节)解释:

扩充导入符-标识扩充的开始。

该字段为固定值0x21。

注释标号-标示某块为注释扩充。

该段为固定值0xFE。

注释数据-按照子块顺序,每个注释最少1字节最多255字节。

序列结尾用块结束符标识。

块结束符-用来标识注释扩充的结束。

纯文本扩充(版本-89a)纯文本扩充包括纯文本数据和将数据显示为图像所必需的参数。

文本数据将用7位可印刷ASCII码字符编码。

文本数据用在块字段中定义的单元格字符元素来成象。

每个字符用一个单元成象。

该块使用全局色表。

它可以被图形控制扩充来修改。

该块为可选块。

扩充导入符(1字节)纯文本标记(1字节)块尺寸(1字节)文本格左坐标(2字节)文本格顶坐标(2字节)文本格宽度(2字节)文本格高度(2字节)字符单元宽度(1字节)字符单元宽度(1字节)文本前景色索引(1字节)文本背景色索引(1字节)纯文本数据数据子块(n字节)块结束符(1字节)解释:

扩充导入符-标识一个扩充块的开始。

取固定值0x21.纯文本标记-标识当前块为原文扩充。

取固定值0x01.块尺寸-扩充中的字节数,取固定值12.文本格左位置-逻辑视屏的左边,用象素表示的左边列数,文本格顶位置-逻辑视屏的上边,用象素表示的上边行数。

原文数据-子块序列,每个子块最少1字节最多255字节。

该序列遇到块结束符时结束。

块结束符0,用来标志块结束。

应用扩充(版本-89a)应用扩充包含应用说明信息;

它遵守如下所述的扩充块的语法,块标记为0xff.数据组成格式为:

扩充导入符(1字节)扩充标记(1字节)块尺寸(2字节)应用标识符(8字节)应用证明码(3字节)应用数据数据子块(n字节)块结束符(1字节)解释:

扩充引入符-定义该块位扩充块。

取固定值0x21.应用扩充标记-标识该块为应用扩充块。

取固定值0xFF.块尺寸-指示该块中包含的字节数。

取固定值11.应用标识符-8格可印刷ASCII字符用来标识该应用所属的应用扩充。

应用证明码-3格字节的序列用于证明应用标识符。

一个应用程序可以一种算法来计算一个二进制码来唯一地识别这个应用是否数于这个应用扩充。

尾记录该块为一个单字段块,用来指示该数据流的结束。

取固定值0x3b2.什么是BMP文件?

叙述一下该图片文件格式结构。

BMP(全称Bitmap)是Window操作系统中的标准图像文件格式,可以分成两类:

设备相关位图(DDB)和设备无关位图(DIB),使用非常广。

它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大。

BMP文件的图像深度可选lbit、4bit、8bit及24bit。

BMP文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。

由于BMP文件格式是Windows环境中交换与图有关的数据的一种标准,因此在Windows环境中运行的图形图像软件都支持BMP图像格式。

BMP文件存储结构的格式可以在Windows中的WINGDI.h文件中找到定义。

BMP文件总体上由4部分组成,分别是位图文件头、位图信息头、调色板和图像数据,如表5-1所示。

表5-1BMP文件的组成结构位图文件头(bitmap-fileheader)位图信息头(bitmap-informationheader)彩色表/调色板(colortable)位图数据(bitmap-data)下面来详细看一下每个组成部分的细节。

1位图文件头(bitmap-fileheader)位图文件头(bitmap-fileheader)包含了图像类型、图像大小、图像数据存放地址和两个保留未使用的字段。

打开WINGDI.h文件,搜索BITMAPFILEHEADER就可以定位到BMP文件的位图文件头的数据结构定义。

typedefstructtagBITMAPFILEHEADERWORDbfType;

DWORDbfSize;

WORDbfReserved1;

WORDbfReserved2;

DWORDbfOffBits;

BITMAPFILEHEADER,FAR*LPBITMAPFILEHEADER,*PBITMAPFILEHEADER;

表5-2列出了tagBITMAPFILEHEADER中各字段的含义。

表5-2tagBITMAPFILEHEADER结构字段名大小(单位:

字节)描述bfType2位图类别,根据不同的操作系统而不同,在Windows中,此字段的值总为BMbfSize4BMP图像文件的大小bfReserved12总为0bfReserved22总为0bfOffBits4BMP图像数据的地址2位图信息头(bitmap-informationheader)位图信息头(bitmap-informationheader)包含了位图信息头的大小、图像的宽高、图像的色深、压缩说明图像数据的大小和其他一些参数。

打开WINGDI.h文件,搜索tagBITMAPINFOHEADER就可以定位到BMP文件的位图信息头的数据结构定义。

typedefstructtagBITMAPINFOHEADERDWORDbiSize;

LONGbiWidth;

LONGbiHeight;

WORDbiPlanes;

WORDbiBitCount;

DWORDbiCompression;

DWORDbiSizeImage;

LONGbiXPelsPerMeter;

LONGbiYPelsPerMeter;

DWORDbiClrUsed;

DWORDbiClrImportant;

BITMAPINFOHEADER,FAR*LPBITMAPINFOHEADER,*PBITMAPINFOHEADER;

表5-3列出了tagBITMAPFILEHEADER中各字段的含义。

表5-3tagBITMAPFILEHEADER结构字段名大小(单位:

字节)描述biSize4本结构的大小,根据不同的操作系统而不同,在Windows中,此字段的值总为28h字节=40字节biWidth4BMP图像的宽度,单位像素biHeight4总为0biPlanes2总为0biBitCount2BMP图像的色深,即一个像素用多少位表示,常见有1、4、8、16、24和32,分别对应单色、16色、256色、16位高彩色、24位真彩色和32位增强型真彩色biCompression4压缩方式,0表示不压缩,1表示RLE8压缩,2表示RLE4压缩,3表示每个像素值由指定的掩码决定biSizeImage4BMP图像数据大小,必须是4的倍数,图像数据大小不是4的倍数时用0填充补足biXPelsPerMeter4水平分辨率,单位像素/mbiYPelsPerMeter4垂直分辨率,单位像素/mbiClrUsed4BMP图像使用的颜色,0表示使用全部颜色,对于256色位图来说,此值为100h=256biClrImportant4重要的颜色数,此值为0时所有颜色都重要,对于使用调色板的BMP图像来说,当显卡不能够显示所有颜色时,此值将辅助驱动程序显示颜色3彩色表/调色板(colortable)彩色表/调色板(colortable)是单色、16色和256色图像文件所特有的,相对应的调色板大小是2、16和256,调色板以4字节为单位,每4个字节存放一个颜色值,图像的数据是指向调色板的索引。

可以将调色板想象成一个数组,每个数组元素的大小为4字节,假设有一256色的BMP图像的调色板数据为:

调色板0=黑、调色板1=白、调色板2=红、调色板3=蓝调色板255=黄图像数据010002FF表示调用调色板1、调色板0、调色板2和调色板255中的数据来显示图像颜色。

在早期的计算机中,显卡相对比较落后,不一定能保证显示所有颜色,所以在调色板中的颜色数据应尽可能将图像中主要的颜色按顺序排列在前面,位图信息头的biClrImportant字段指出了有多少种颜色是重要的。

每个调色板的大小为4字节,按蓝、绿、红存储一个颜色值。

打开WINGDI.h文件,搜索tagRGBTRIPLE就可以定位到BMP文件的调色板的数据结构定义。

typedefstructtagRGBQUADBYTErgbBlue;

BYTErgbGreen;

BYTErgbRed;

BYTErgbReserved;

RGBQUAD;

表5-4列出了tagRGBTRIPLE中各字段的含义。

表5-4tagRGBTRIPLE结构字段名大小(单位:

字节)描述rgbBlue1蓝色值rgbGreen1绿色值rgbRed1红色值rgbReserved1保留,总为04位图数据(bitmap-data)如果图像是单色、16色和256色,则紧跟着调色板的是位图数据,位图数据是指向调色板的索引序号。

如果位图是16位、24位和32位色,则图像文件中不保留调色板,即不存在调色板,图像的颜色直接在位图数据中给出。

16位图像使用2字节保存颜色值,常见有两种格式:

5位红5位绿5位蓝和5位红6位绿5位蓝,即555格式和565格式。

555格式只使用了15位,最后一位保留,设为0。

24位图像使用3字节保存颜色值,每一个字节代表一种颜色,按红、绿、蓝排列。

32位图像使用4字节保存颜色值,每一个字节代表一种颜色,除了原来的红、绿、蓝,还有Alpha通道,即透明色。

如果图像带有调色板,则位图数据可以根据需要选择压缩与不压缩,如果选择压缩,则根据BMP图像是16色或256色,采用RLE4或RLE8压缩算法压缩。

RLE4是压缩16色图像数据的,RLE4采用表5-5所示方式压缩数据。

表5-5RLE4压缩方法方案1字节2字节3字节4字节N字节A重复次数颜色索引B设为0后面有效的颜色索引数颜色索引颜色索引颜色索引3具备什么条件才能进行数据压缩:

数据存在冗余(重复数据、可忽略数据)、不敏感因素(颜色、亮度、频率、细节)、数据传输与存储空间的限制(压缩传输或存储解压缩)4冗余指的是什么:

冗余信息所具有的各种性质中多余的无用空间。

指出三种冗余:

1空间冗余,2时间冗余,3结构冗余。

5指出霍夫曼压缩编码的特点:

1编码长度可变,压缩与解压缩较慢,2硬件实现困难,3编码效率取决于信号源的数据出现概率。

6编写一个程序,将一个图像放大3倍源程序如下:

%MatlabProgram1-1filename=input();

Image=imread(filename)FunctionImOut=myzoom2(Image)A=double(Image);

a,b=size(A);

x=3;

fort=0:

x-1fork=1:

aforl=1:

bift=x-1temp(k*x-t,l)=A(k,l);

elsetemp(k*x-t,l)=0;

endendendendfort=0:

a*xforl=1:

bift=2ImOut(k,l*x-t)=temp(k,l);

elseImOut(k,l*x-t)=0;

endendendendfort=1:

a-1forl=1:

b*xImOut(k*x-t+1,l)=ImOut(k*x-x+1,l)+.(ImOut(k+1)*x-x+1,l)-ImOut(k*x-x+1,l)/x*(x-t);

endendendfort=1:

b-1ImOut(k,l*x-t+1)=ImOut(k,l*x-x+1)+.(ImOut(k,(l+1)*x-x+1)-ImOut(k,l*x-x+1)/x*(x-t);

endendendreturn7.编写一个程序,将一个图像旋转45度源程序如下:

%MatlabProgram1-2filename=input();

Image=imread(filename);

Image=rgb2gray(Image);

A=45;

Angle=3.14*A/180;

X,Y=size(Image);

imshow(Image);

LeftTop(1,1)=-(Y-1)*sin(Angle);

LeftTop(1,2)=(Y-1)*cos(Angle);

LeftBottom(1,1)=0;

LeftBottom(1,2)=0;

RightTop(1,1)=(X-1)*cos(Angle)-(Y-1)*sin(Angle);

RightTop(1,2)=(X-1)*sin(Angle)+(Y-1)*cos(Angle);

RightBottom(1,1)=(X-1)*cos(Angle);

RightBottom(1,2)=(X-1)*sin(Angle);

Xnew=max(LeftTop(1,1),LeftBottom(1,1),RightTop(1,1),RightBottom(1,1)-min(LeftTop(1,1),LeftBottom(1,1),RightTop(1,1),RightBottom(1,1);

Ynew=max(LeftTop(1,2),Left

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1