1、数字媒体 实验报告数字媒体实验报告色品图绘制一实验目的给定颜色匹配试验中,XYZ三刺激分量针对不同单色谱光源的匹配值,试:xy色品图舌形外轮廓图;对该色品图进行着色。二相关知识点颜色匹配:通过改变参加混色各颜色的量,使混合色与指定颜色达到视觉上相同的过程。从大量的颜色匹配实验中,可以得到如下的结论:红、绿、兰三种颜色以不同的量值(有的可能为负值)相混合,可以匹配任何颜色。红、绿、兰不是唯一的能匹配所有颜色的三种颜色。三种颜色,只要其中的每一种都不能用其它两种混合产生出来,就可以用它们匹配所有的颜色。三实验原理颜色匹配实验:是为了给颜色视觉的理论研究提供实验依据,并建立一个实用的颜色度量方法,科
2、学家们设计了一个特殊的试验来确定和定义一个具有正常颜色视觉的观察者的“颜色匹配函数”。把适当的三原色按一定的比例进行相加混合可以仿造任何一种色彩,并且对人的眼睛能引起相同的视觉效果。 在颜色匹配实验中,当这三原色光的相对亮度比例为1.0000:4.5907:0.0601时就能匹配出等能白光,所以CIE选取这一比例作为红、绿、蓝三原色的单位量,即:(R):(G): (B)=1:1:1。颜色匹配可以用数学方法表示:量的红颜色,量的红颜色,量的红颜色,正好与颜色C相匹配,这一事实可用方程表示为:,匹配结果记为:CIE-RGB到XYZ:但由于计算过程中会出现负值,使计算变得既复杂,又不容易理解;国际照
3、明委员会讨论通过了一个新的用于色度学计算的系统,这就CIEl931-XYZ系统由于CIE1931-RGB系统存在的问题,国际照明委员会在此基础上,又以三个假想的原色光(X)、(Y)、(Z)建立起一个新的色度学系统,这个系统就称之为CIEl931标准色度学系统,亦称之为CIEl93l-XYZ系统。RGBXYZ的转化矩阵理想的色品图:四实验步骤1. 根据三刺激值绘制出色品图的轮廓。2.生成xy网格点,并用inpolygon函数判断网格点是不是在轮廓内。3. 找出在轮廓内的点,用插值的方法求出此点的rgb,并绘图。五实验结果六实验总结在本次实验中,遇到了一些自己不会的问题,但是通过不断地和同学探讨和
4、请教都弄懂了。自己才实验中除了学到了知识,更学到了独立看书的理解能力。七相关程序clearall;clc;close all%色度图%波长从360nm到730nm,间隔只有1nm;矩阵的第一列是波长,第二列是X刺激值.%第二列是Y刺激值,第三列是Z刺激值data=xlsread(E:CIE-xyz,Sheet2,A2:G41);%计算xy坐标X=data(:,2);%X刺激值Y=data(:,3);%Y刺激值Z=data(:,4);%Z刺激值x=data(:,5); %样本点xy=data(:,6); %样本点yz=data(:,7); %样本点z%三刺激值转化为RGBRGB=XYZ2RGB(
5、X,Y,Z); %XYZ2RGB为自定义转换函数R=RGB(:,1);G=RGB(:,2);B=RGB(:,3);hold on;gridplot(x,y);%获取数组长度len,a=size(x);%把图形封闭起来plot(x(1),x(len),y(1),y(len);x1=x;x(1);y1=y;y(1);ticXX,YY=meshgrid(0:.01:1,0:.01:1);in=inpolygon(XX,YY,x1,y1);index=find(in=1);FR=TriScatteredInterp(x,y,R,natural);FG=TriScatteredInterp(x,y,G,
6、natural);FB=TriScatteredInterp(x,y,B,natural);fori =1:length(index) r=FR(XX(index(i),YY(index(i); g=FG(XX(index(i),YY(index(i); b=FB(XX(index(i),YY(index(i); if(r0.95&g0.95&b0.95) %白化处理,防止因插值带来的误差 r=1;g=1;b=1;endif(r1) r=1;elseif(r1) g=1;elseif(g1) b=1;elseif(bxre)x3=max(x)+0.1; y3=yre-k*(xre-x3);en
7、dif(x0xre)x3=-0.1; y3=yre-k*(xre-x3);endendselect=0;elseerrordlg(拾取点在色品图外部,无法计算色度和饱和度.请重新选取,Waring!,on);pause(1)endendxline=xre x0 x3;yline=yre y0 y3;xcross,ycross=polyxpoly(xline,yline,x1,y1,unique);xxline=xre x0 xcross;yyline=yre y0 ycross;plot(xxline,yyline,r);plot(x0,y0,ko);plot(xcross,ycross,ko
8、);xlabel(x)ylabel(y)title(CIE-xyz)text(xre,yre, referene point)text(x0,y0, input point)text(xcross,ycross, cross point)%色调H,饱和度S的计算if( (ycross-y(1)*(x(end)-xcross) = (y(end)-ycross)*(xcross-x(1) )%交点在纯紫线上 H=780;elsewavelength=data(:,1); H=griddata(x,y,wavelength,xcross,ycross,v4);endD=sqrt(xre-xcros
9、s)2+(yre-ycross)2);%参考白点到交点的距离d=sqrt(xre-x0)2+(yre-y0)2); %参考白点到拾取点的距离S=d/D;BMP格式分析一实验目的给定若干幅用BMP格式保存的数字图像 1. 编写一个程序读取BMP图像。 2. 用UltraEdit等工具分析保存的BMP图像格式。 二相关知识点BMP是一种与硬件设备无关的图像文件格式,使用非常广。它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BblP文件所占用的空间很大。BMP文件的图像深度可选lbit、 4bit、8bit及24bit。BMP文件存储数据时,图像的扫描方式是按从左到右、从下到
10、上的顺序。由于BMP文件格式是Windows环境中交换与图有关的数据的一种标准,因此在Windows环境中运行的图形图像软件都支持BMP图像格式。典型的BMP图像文件由三部分组成:位图文件头数据结构,它包含BMP图像文件的类型、显示内容等信息;位图信息数据结构,它包含有BMP图像的宽、高、压缩方法,以及定义颜色等信息。三实验原理如某BMP文件开头:424D 4690 0000 0000 0000 4600 0000 2800 0000 8000 0000 9000 0000 0100*1000 0300 0000 0090 0000 A00F 0000 A00F 0000 0000 0000
11、0000 0000*00F8 0000 E007 0000 1F00 0000 0000 0000*02F1 84F1 04F1 84F1 84F1 06F2 84F1 06F2 04F2 86F2 06F2 86F2 86F2 . .BMP文件可分为四个部分:位图文件头、位图信息头、彩色板、图像数据阵列,在上图中已用*分隔。、图像文件头1)1:图像文件头。424Dh=BM,表示是Windows支持的BMP格式。2)2-3:整个文件大小。4690 0000,为00009046h=36934。3)4-5:保留,必须设置为0。4)6-7:从文件开始到位图数据之间的偏移量。4600 0000,为00
12、000046h=70,上面的文件头就是35字=70字节。5)8-9:位图图信息头长度。6)10-11:位图宽度,以像素为单位。8000 0000,为00000080h=128。7)12-13:位图高度,以像素为单位。9000 0000,为00000090h=144。8)14:位图的位面数,该值总是1。0100,为0001h=1。、位图信息头9)15:每个像素的位数。有1(单色),4(16色),8(256色),16(64K色,高彩色),24(16M色,真彩色),32(4096M色,增强型真彩色)。1000为0010h=16。10)16-17:压缩说明:有0(不压缩),1(RLE 8,8位RLE压
13、缩),2(RLE 4,4位RLE压缩,3(Bitfields,位域存放)。RLE简单地说是采用像素数+像素值的方式进行压缩。T408采用的是位域存放方式,用两个字节表示一个像素,位域分配为r5b6g5。图中0300 0000为00000003h=3。11)18-19:用字节数表示的位图数据的大小,该数必须是4的倍数,数值上等于位图宽度位图高度每个像素位数。0090 0000为00009000h=80902h=36864。12)20-21:用象素/米表示的水平分辨率。A00F 0000为0000 0FA0h=4000。13)22-23:用象素/米表示的垂直分辨率。A00F 0000为0000 0
14、FA0h=4000。14)24-25:位图使用的颜色索引数。设为0的话,则说明使用所有调色板项。15)26-27:对图象显示有重要影响的颜色索引的数目。如果是0,表示都重要。、彩色板(非必有)16)28-35:彩色板规范。对于调色板中的每个表项,用下述方法来描述RGB的值:1字节用于蓝色分量1字节用于绿色分量1字节用于红色分量1字节用于填充符(设置为0)对于24-位真彩色图像就不使用彩色板,因为位图中的RGB值就代表了每个象素的颜色。如,彩色板为00F8 0000 E007 0000 1F00 0000 0000 0000,其中:00FB 0000为FB00h=1111100000000000
15、(二进制),是红色分量的掩码。E007 0000为 07E0h=0000011111100000(二进制),是绿色分量的掩码。1F00 0000为001Fh=0000000000011111(二进制),是红色分量的掩码。0000 0000总设置为0。将掩码跟像素值进行“与”运算再进行移位操作就可以得到各色分量值。看看掩码,就可以明白事实上在每个像素值的两个字节16位中,按从高到低取5、6、5位分别就是r、g、b分量值。取出分量值后把r、g、b值分别乘以8、4、8就可以补齐第个分量为一个字节,再把这三个字节按rgb组合,放入存储器(同样要反序),就可以转换为24位标准BMP格式了。、图像数据阵列
16、17)17-:每两个字节表示一个像素。阵列中的第一个字节表示位图左下角的象素,而最后一个字节表示位图右上角的象素。四实验结果1)读取BMP图片:图片Test1.bmp:文件头:信息头:像素数据:图片Test4.bmp:文件头:信息头:像素数据:图片Test8.bmp:文件头:信息头:像素数据:2)用UltraEdit等工具分析保存的BMP图像格式。Test1.bmp位图文件头位图文件头分4部分,共14字节:名称占用空间内容实际数据bfType2字节标识,就是“BM”二字42 4DbfSize4字节整个BMP文件的大小3660 0000bfReserved1/24字节保留字,没用0000 000
17、0bfOffBits4字节偏移数,即位图文件头+位图信息头+调色板的大小3600 0000 位图信息头位图信息头共40字节:名称占用空间内容实际数据biSize4字节位图信息头的大小,为402800 0000biWidth4字节位图的宽度,单位是像素7F00 0000biHeight4字节位图的高度,单位是像素4000 0000biPlanes2字节固定值10100biBitCount2字节每个像素的位数1-黑白图,4-16色,8-256色,24-真彩色1800biCompression4字节压缩方式,BI_RGB(0)为不压缩0000 0000biSizeImage4字节位图全部像素占用的字
18、节数,BI_RGB时可设为00000 0000biXPelsPerMeter4字节水平分辨率(像素/米)0biYPelsPerMeter4字节垂直分辨率(像素/米)0biClrUsed4字节位图使用的颜色数如果为0,则颜色数为2的biBitCount次方0biClrImportant4字节重要的颜色数,0代表所有颜色都重要0Test4:位图文件头位图文件头分4部分,共14字节:名称占用空间内容实际数据bfType2字节标识,就是“BM”二字42 4DbfSize4字节整个BMP文件的大小3660 0000bfReserved1/24字节保留字,没用0000 0000bfOffBits4字节偏移
19、数,即位图文件头+位图信息头+调色板的大小3600 0000 位图信息头位图信息头共40字节:名称占用空间内容实际数据biSize4字节位图信息头的大小,为402800 0000biWidth4字节位图的宽度,单位是像素7F00 0000biHeight4字节位图的高度,单位是像素4000 0000biPlanes2字节固定值10100biBitCount2字节每个像素的位数1-黑白图,4-16色,8-256色,24-真彩色1800biCompression4字节压缩方式,BI_RGB(0)为不压缩0000 0000biSizeImage4字节位图全部像素占用的字节数,BI_RGB时可设为00
20、000 0000biXPelsPerMeter4字节水平分辨率(像素/米)0biYPelsPerMeter4字节垂直分辨率(像素/米)0biClrUsed4字节位图使用的颜色数如果为0,则颜色数为2的biBitCount次方0biClrImportant4字节重要的颜色数,0代表所有颜色都重要0Test8:位图文件头位图文件头分4部分,共14字节:名称占用空间内容实际数据bfType2字节标识,就是“BM”二字42 4DbfSize4字节整个BMP文件的大小3660 0000bfReserved1/24字节保留字,没用0000 0000bfOffBits4字节偏移数,即位图文件头+位图信息头+
21、调色板的大小3600 0000 位图信息头位图信息头共40字节:名称占用空间内容实际数据biSize4字节位图信息头的大小,为402800 0000biWidth4字节位图的宽度,单位是像素7F00 0000biHeight4字节位图的高度,单位是像素4000 0000biPlanes2字节固定值10100biBitCount2字节每个像素的位数1-黑白图,4-16色,8-256色,24-真彩色1800biCompression4字节压缩方式,BI_RGB(0)为不压缩0000 0000biSizeImage4字节位图全部像素占用的字节数,BI_RGB时可设为00000 0000biXPels
22、PerMeter4字节水平分辨率(像素/米)0biYPelsPerMeter4字节垂直分辨率(像素/米)0biClrUsed4字节位图使用的颜色数如果为0,则颜色数为2的biBitCount次方0biClrImportant4字节重要的颜色数,0代表所有颜色都重要0五实验程序头文件BMP.h#ifndef BMP_H_INCLUDED#define BMP_H_INCLUDEDtypedef unsigned short WORD;typedef unsigned long DWORD;typedef long LONG;typedef unsigned char BYTE;typedef s
23、truct tagBITMAPFILEHEADER / bmfh WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits;BITMAPFILEHEADER;typedef struct tagBITMAPINFOHEADER / bmihDWORD biSize; LONG biWidth; LONG biHeight; WORD biPlanes; WORD biBitCount;DWORD biCompression;DWORD biSizeImage; LONG biXPelsPerMe
24、ter; LONG biYPelsPerMeter;DWORD biClrUsed;DWORD biClrImportant;BITMAPINFOHEADER;typedef struct tagRGBQUAD / rgbq BYTE rgbBlue; BYTE rgbGreen; BYTE rgbRed; BYTE rgbReserved;RGBQUAD;typedef struct tagBITMAPINFO BITMAPINFOHEADER bmiHeader; RGBQUAD bmiColors1;BITMAPINFO;#endif / BMP_H_INCLUDED主程序:#inclu
25、de #include #include #include #include #include #include BMP.hBITMAPFILEHEADER bmfh;BITMAPINFOHEADER bmih;BYTE *imgData;bool bReadBMFH=false;bool bReadBMIH=false;bool bReadPixel=false;/检查路径是否合法:文件能打开;以bmp为后缀名int CheckFilePath(char *filepath);/读入位图的文件头int ReadFileHeader(char *filepath,BITMAPFILEHEADE
26、R *bmfh);/打印位图的文件头void PrintFileHeader(BITMAPFILEHEADER *bmfh);/读入位图的信息头int ReadInfoHeader(char *filepath,BITMAPINFOHEADER *bmih);/打印位图的信息头void PrintInfoHeader(BITMAPINFOHEADER *bmih);/创建8位位图的调色板int CreatePalette(RGBQUAD pal);/读入位图的像素数据int ReadPixelData(char *filepath,BYTE *imgData);/计算每行像素所占的字节数LONG GetLineBytes(int imgWidth,int bitCount);/打印位图的像素数据void PrintPixelData(BYTE *imgData,int width,int height,int bitCount);/打印菜单选项void PrintMenu();/另存为位图int SaveAsImage(char *filepath);/显示位图void ShowImage(char * filepath);int main()
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1