




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
北京航空航天大学学生设计用纸综合课程实验报告-“数字图像软件平台的设计与编制”姓 名: 郭炳映 指导老师: 傅健 学 号: 39071324 院 系: 机械工程及自动化 2012年11月15日目录综合实验任务书- 1 -一、实验原理与主要框架- 2 -1.1实验所用编程环境:- 2 -1.2bmp位图的基本结构:- 2 -(1) BMP(BITMAP)位图的文件结构:- 2 -(2) BMP文件组成 :- 2 -(3) BMP文件头 :- 2 -(4)位图信息头 :- 2 -(5)颜色表 :- 3 -(6)位图数据 :- 3 -(7)具体组成图:- 3 -1.3bmp图的读入与显示、保存:- 4 -(1)文件的读取:- 4 -(2)文件的显示:- 7 -(3)文件的保存:- 8 -1.4裸数据的设置:- 10 -二、基本功能的编写与实现- 12 -2.1 图像的变换概述:- 12 -2.2 图像的反色:- 12 -2.3 图像二值化:- 13 -2.4 灰度拉伸:- 15 -2.5 均值滤波:- 17 -2.6 中值滤波:- 18 -2.7 锐化滤波:- 20 -三、学习数字图像处理感想- 22 -北京航空航天大学学生设计用纸数字图像软件平台的设计与编制本实验是为机械工程及自动化的本科生四年级学生所开设的。它是在学习了大学计算机基础、C语言程序设计基础等课程后进行的。为了给专业课程设计和毕业设计打好基础,也为了综合运用已学的课程,特设置题为“数字图像软件平台的设计与编制”的综合实验课程。一本课程的目的 课程主要讨论数字图像处理的基本概念、理论与算法,并提供专门的实验环境和平台,使学生掌握常见图像算法的设计与编程能力,提高学生的理论联系实际的应用水平,提高学生的动手能力并培养学生分析问题和解决问题的能力。二任务与要求设计并编制一套数字图像软件,该软件功能包括:(1) 对bmp文件和裸数据的读入,显示,与保存。(2) Bmp文件和 裸数据文件的相互转换。(3) 对图像的反色与显示。(4) 对图像的灰度拉伸与显示。(5) 对图像的平滑滤波。(6) 对图像的锐化滤波。 三.教学安排及分配第一周:发任务书,讲课,安装工具软件vc6.0。学生实践vc6.0的源代码编写,编译与执行。第二周:讨论bmp位图结构。第三,四周;对bmp文件和裸数据的读入,显示,与保存。第五周:图像的反色处理。第六周:图像的灰度拉伸。第七周:图像的平滑滤波。第八周:图像的锐化滤波。第九周:编写综合实验报告。第十周:口试,交实验报告。四.考核方式在实验过程中有几个阶段性的检查,有量化得分,再与实验报告、口试综合打分;成绩:优,良,中,及格,不及格。综合实验任务书- 22 -一、 实验原理与主要框架1.1 实验所用编程环境:Visual C+(简称VC)是微软公司提供的基于C/C+的应用程序集成开发工具。VC拥有丰富的功能和大量的扩展库,使用它能有效的创建高性能的Windows应用程序和Web应用程序。VC除了提供高效的C/C+编译器外,还提供了大量的可重用类和组件,包括著名的微软基础类库(MFC)和活动模板类库(ATL),因此它是软件开发人员不可多得的开发工具。VC丰富的功能和大量的扩展库,类的重用特性以及它对函数库、DLL库的支持能使程序更好的模块化,并且通过向导程序大大简化了库资源的使用和应用程序的开发,正由于VC具有明显的优势,因而我选择了它来作为数字图像几何变换的开发工具。在本程序的开发过程中,VC的核心知识、消息映射机制、对话框控件编程等都得到了生动的体现和灵活的应用。1.2 bmp位图的基本结构:(1) BMP(BITMAP)位图的文件结构:(2) BMP文件组成 :BMP文件由文件头、位图信息头、颜色信息和图形数据四部分组成。(3) BMP文件头 :BMP文件头数据结构含有BMP文件的类型(必须为BMP)、文件大小(以字节为单位)、位图文件保留字(必须为0)和位图起始位置(以相对于位图文件头的偏移量表示)等信息。(4) 位图信息头 :BMP位图信息头数据用于说明位图的尺寸(宽度,高度等都是以像素为单位,大小以字节为单位, 水平和垂直分辨率以每米像素数为单位) ,目标设备的级别,每个像素所需的位数, 位图压缩类型(必须是 0)等信息。(5) 颜色表 :颜色表用于说明位图中的颜色,它有若干个表项,每一个表项是一个RGBQUAD类型的结构,定义一种颜色。具体包含蓝色、红色、绿色的亮度(值范围为0-255)。位图信息头和颜色表组成位图信息(6) 位图数据 : 位图数据记录了位图的每一个像素值,记录顺序是在扫描行内是从左到右,扫描行之间是从下到上。 Windows规定一个扫描行所占的字节数必须是4的倍数(即以long为单位),不足的以0填充。(7) 具体组成图:1.3 bmp图的读入与显示、保存:(1) 文件的读取:Bmp位图的读取主要分为三大部分:读取文件头和信息头、设置调色板、读取文件信息。n Visual C+ 程序如下:/* * 函数名称:Load() * 参数: * const char *pszFilename -文件的路径。* 返回值: BOOL -读取成功返回TRUE,否则返回FALSE。 * 说明: * 该函数用来读取DIB图像。 */BOOL CDib:Load ( const char *pszFilename )CFile cf;if( !cf.Open( pszFilename, CFile:modeRead ) )return( FALSE ); /如果不能打开,返回FALSECString s2 (pszFilename);if(s2.Right(3)= =bmp) /如果后缀是bmpBITMAPFILEHEADER BFH;cf.Read(&BFH,sizeof(BFH); /读取文件头if(BFH.bfType!=MB)AfxMessageBox(无法打开文件,MB_OK,0);return FALSE;DWORD dwDibSize;dwDibSize = cf.GetLength() - sizeof( BITMAPFILEHEADER ); /除文件头外文件的大小unsigned char *pDib;pDib = new unsigned char dwDibSize;if( pDib = = NULL )return( FALSE );tryif( cf.Read( pDib, dwDibSize ) != dwDibSize ) /读取剩余的数据delete pDib;return( FALSE );catch( CFileException *e )e-Delete();delete pDib;return( FALSE );if( m_pDib != NULL ) /如果不为空,先删除缓存delete m_pDib;m_pDib = pDib;m_dwDibSize = dwDibSize;m_pBIH = (BITMAPINFOHEADER *) m_pDib; /信息头指针lpbmi = (LPBITMAPINFO )m_pDib;m_pBIH-biSizeImage= BFH.bfSize - BFH.bfOffBits; /图像数据大小m_pPalette =(RGBQUAD *) &m_pDibsizeof(BITMAPINFOHEADER); /调色板指针m_nPaletteEntries = 1 biBitCount;if( m_pBIH-biBitCount 8 )m_nPaletteEntries = 0;else if( m_pBIH-biClrUsed != 0 )m_nPaletteEntries = m_pBIH-biClrUsed;m_pDibBits =&m_pDibsizeof(BITMAPINFOHEADER) + m_nPaletteEntries*sizeof(RGBQUAD); /图像数据指针if(s2.Right(3)= = gby) /如果后缀为gbyGBYFILEHEADER GBH;cf.Read(&GBH,sizeof(GBH); /读取文件头DWORD dwDibSize;dwDibSize = cf.GetLength() - sizeof( GBYFILEHEADER );float *pDib;pDib = new float dwDibSize;if( pDib = = NULL )return( FALSE );tryif( cf.Read( pDib, dwDibSize ) != dwDibSize ) /读取剩余数据delete pDib;return( FALSE );catch( CFileException *e )e-Delete();delete pDib;return( FALSE );if( m_pDib != NULL ) /如不为空,先清缓存delete m_pDib;m_pDib = new unsigned charsizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD)* 256+ sizeof(unsigned char) * GBH.gbyHeight*GBH.gbyWidth; /为变量申请空间m_dwDibSize = dwDibSize;m_pBIH = (BITMAPINFOHEADER *) m_pDib; /信息头指针lpbmi = (LPBITMAPINFO )m_pDib;m_pBIH-biSizeImage= GBH.gbyWidth * GBH.gbyHeight; /自己添加信息头的值m_pBIH-biBitCount=8;m_pBIH-biClrImportant=256;m_pBIH-biClrUsed=256;m_pBIH-biCompression=0;m_pBIH-biHeight = GBH.gbyHeight;m_pBIH-biWidth =GBH.gbyWidth;m_pBIH-biPlanes=1;m_pBIH-biSize= 40;m_pBIH-biXPelsPerMeter=0;m_pBIH-biYPelsPerMeter=0;lpbmi-bmiColors-rgbBlue=0;lpbmi-bmiColors-rgbGreen=0;lpbmi-bmiColors-rgbRed=0;lpbmi-bmiColors-rgbReserved=0;m_pPalette =(RGBQUAD *) &m_pDibsizeof (BITMAPINFOHEADER); /调色板指针m_nPaletteEntries = 1 biBitCount;if( m_pBIH-biBitCount 8 )m_nPaletteEntries = 0;else if( m_pBIH-biClrUsed != 0 )m_nPaletteEntries = m_pBIH-biClrUsed;for( int i=0; im_nPaletteEntries; i+ ) /自己设置调色板的值m_pPalettei.rgbBlue=i;m_pPalettei.rgbGreen=i;m_pPalettei.rgbRed=i;m_pPalettei.rgbReserved=0;m_pDibBits =&m_pDibsizeof(BITMAPINFOHEADER)+ m_nPaletteEntries*sizeof(RGBQUAD);for(int i=0 ; ipalVersion = 0x300;pLogPal-palNumEntries = m_nPaletteEntries;for( int i=0; ipalPalEntryi.peRed =i;pLogPal-palPalEntryi.peGreen =i;pLogPal-palPalEntryi.peBlue =i;m_Palette.CreatePalette( pLogPal );delete pLogPal;return( TRUE );(1)(2) 文件的显示:将BMP位图在显示窗口中显示出来,Draw()中用到了SetDIBitsToDevice语句,该语句使用DIB位图和颜色数据对与目标设备环境相关的设备上的指定矩形中的像素进行设置。具体的参数含义和具体指代参照以下程序注释。n Visual C+ 程序如下:/* * 函数名称:Draw( CDC *pDC, int nX, int nY, int nWidth, int nHeight ) * 参数: * CDC *pDC -文件的句柄。* int nX -起始横坐标* int nY -起始纵坐标* int nWidth -图像宽度* int nHeight -图像高度* 返回值: BOOL -操作成功返回TRUE,否则返回FALSE。 * 说明: * 该函数用来显示DIB图像。 */BOOL CDib:Draw( CDC *pDC, int nX, int nY, int nWidth, int nHeight )if( m_pDib = = NULL ) /如果没有数据,返回FALSEreturn( FALSE );if( nWidth = = -1 )nWidth = m_pBIH-biWidth;if( nHeight = = -1 )nHeight = m_pBIH-biHeight;SetDIBitsToDevice(pDC-m_hDC, /DIB将输出的设备描述表nX, /设备描述表中位图输出起始逻辑地址nY,nWidth, /DIB的宽度nHeight , /DIB的高度0, /DIB开始读取输出的像素数据的x位置0, / DIB开始读取输出的像素数据的y位置0, / DIB中像数的水平行号,它对应IpBits内存缓冲区第一行数据m_pBIH-biHeight, / DIB的行数,对应包含在由IpBits所指内存缓冲区中的数据m_pDibBits, / 包含像数数据的内存缓冲区的指针lpbmi, / 指向初始化了的BITMAPINFO数据结构的指针,描述了位图的大小和色彩数据DIB_RGB_COLORS); / 指定是显示的颜色return( TRUE );(3) 文件的保存:保存时,需要对位图文件头的信息补全并写入。对与裸数据,则不需要对作息头和调色板写入。n Visual C+ 程序如下:/* * 函数名称:Save( const char *pszFilename ) * 参数: * const char *pszFilename -文件的路径。* 返回值: BOOL -保存成功返回TRUE,否则返回FALSE。 * 说明: * 该函数用来保存DIB图像。 */BOOL CDib:Save( const char *pszFilename )if( m_pDib = = NULL )return( FALSE ); /如果没有数据,则返回FALSECFile cf;if( !cf.Open( pszFilename,CFile:modeCreate | CFile:modeWrite ) ) /如果不能打开,返回FALSEreturn( FALSE );CString s1(pszFilename);if(s1.Right(3)!=bmp & s1.Right(3)!= gby )AfxMessageBox(未知的保存类型,MB_OK,0);return FALSE;if(s1.Right(3)= =bmp) /如果后缀为bmptryBITMAPFILEHEADER BFH; /补全文件头memset( &BFH, 0, sizeof( BITMAPFILEHEADER ) ); BFH.bfType = MB;BFH.bfSize = sizeof( BITMAPFILEHEADER ) + m_dwDibSize;BFH.bfOffBits = sizeof( BITMAPFILEHEADER ) +sizeof( BITMAPINFOHEADER ) +m_nPaletteEntries * sizeof( RGBQUAD );cf.Write( &BFH, sizeof( BITMAPFILEHEADER ) ); /写文件头cf.Write( m_pDib, m_dwDibSize ); /写信息头、调色板和图像数据 catch( CFileException *e )e-Delete();return( FALSE ); if(s1.Right(3)=gby) /如果后缀为gbytryGBYFILEHEADER GBH; /补全文件头memset( &GBH, 0, sizeof( GBYFILEHEADER ) );float *math;GBH.gbyType = BG;GBH.gbyHeight = m_pBIH-biHeight;GBH.gbyWidth = m_pBIH-biWidth;math = new float GBH.gbyHeight * GBH.gbyWidth;for(int i=0; i GBH.gbyHeight * GBH.gbyWidth; i+)mathi = (float) m_pDibBitsi; GBH.Maxvalue = math0;GBH.Minvalue = math0;for(int x=0;xbiHeight * m_pBIH-biWidth ;x+) if(GBH.Maxvalue math x)GBH.Minvalue = math x; /获得最大像素值及最小像素值cf.Write( &GBH, sizeof( GBYFILEHEADER ) ); /写文件头 cf.Write( math, sizeof(float)* GBH.gbyHeight * GBH.gbyWidth ); /写图像数据catch( CFileException *e )e-Delete();return( FALSE );return TRUE;1.4 裸数据的设置:裸数据的读取和保存。之所以需要编写一段程序,来完成读取和保存一段裸数据的目的是,在后续课程设计中我们将模拟采样一些数据,并对其进行相关的数学处理。这样的话则要求我们能以一种自己定义的格式来保存这些数据,并且可以运用这个软件从中读取数据。本实验课程中,我命名的裸数据格式为.gby文件。文件格式为自定义的文件头(GBYFILEHEADER)和有效数据(Data)。裸数据的读取和显示、保存均在上面的程序文件中有实现,在这就不再详细讨论。定义的裸数据文件头格式如下:typedef struct tagGBYFILEHEADER WORD gbyType; /指定文件类型,为gbyLONG gbyWidth; /文件的宽度LONG gbyHeight; /文件的高度float Maxvalue; /图像数据的最大值float Minvalue; /图像数据的最小值GBYFILEHEADER;二、 基本功能的编写与实现2.1 图像的变换概述:这里的图像变换,包括反色、二值化、灰度拉伸、平滑滤波、中值滤波和锐化滤波等。程序的基本框架如下。要实现这些功能,我们先编写了一个CDIB类,并在类里写出了相应的函数。然后用类向导把按键对应的响应函数添加到MyDibview.cpp中,最后在响应函数里调用相应的函数就可以了。2.2 图像的反色:对BMP图像的反色,即用255减去当前图像像素的值,就得到反色图。n Visual C+ 程序如下:void CMyDibView:OnViewFanse() CMyDibDoc* pDoc = GetDocument(); /得到当前文档指针ASSERT_VALID(pDoc);LONG i; for( i=0 ; i map.m_pBIH- biSizeImage);i+) pDoc-map.m_pDibBitsi=255-pDoc-map.m_pDibBitsi; Invalidate();n 效果对比图: 图 2.1 原图(左)和反色后的图(右)2.3 图像二值化:图像二值化,即将灰度图转化为黑白二色图,对于一个给定的阈值,当图像像素的值小于这个值的时候,全部设为0;当图像像素值大于这个值的时候,全部赋值为255。这样就实现了将灰度图转化为了只有黑白二值的图。对于阈值的选择,不同的图有不同的最佳阈值,下面介绍一个用迭代法求最佳阈值的方法。n Visual C+ 程序如下:BOOL CDib:ThresholdDIB(LPBITMAPINFO lpbmi , LPSTR lpDIBBits , LONG lWidth , LONG lHeight) LPSTR lpSrc; / 指向源图像的指针LPSTR lpDst; / 指向缓存图像的指针LPSTR lpNewDIBBits; / 指向缓存DIB图像的指针HLOCAL hNewDIBBits;long I , j;unsigned char pixel;long lHistogram256;unsigned char iThreshold, iNewThreshold, iMaxGrayValue, iMinGrayValue, iMean1GrayValue, iMean2GrayValue;long lP1,lP2,lS1,lS2;int iIterationTimes;LONG lLineBytes; / 图像每行的字节数if(!(lpbmi-bmiColors-rgbBlue=lpbmi-bmiColors-rgbGreen & lpbmi-bmiColors-rgbRed = lpbmi-bmiColors-rgbBlue & lpbmi-bmiColors-rgbBlue=0) /判断是否是灰度图AfxMessageBox(请选择一个有效的灰度图,MB_OK,0);return (FALSE);hNewDIBBits = LocalAlloc(LHND, lWidth * lHeight); / 暂时分配内存,以保存新图像if (hNewDIBBits = NULL)return FALSE;lpNewDIBBits = (char * )LocalLock(hNewDIBBits);lpDst = (char *)lpNewDIBBits;memset(lpDst, (BYTE)255, lWidth * lHeight);lLineBytes = WIDTHBYTES(lWidth *8);for (i = 0; i 256;i+)lHistogrami=0;iMaxGrayValue = 0;iMinGrayValue = 255;for (i = 0;i lWidth ;i+)for(j = 0;j pixel)iMinGrayValue = pixel;if(iMaxGrayValue pixel)iMaxGrayValue = pixel;iNewThreshold = (iMinGrayValue + iMaxGrayValue)/2; /迭代求最佳阈值iThreshold = 0;for(iIterationTimes = 0; iThreshold != iNewThreshold & iIterationTimes 100;iIterationTimes +)iThreshold = iNewThreshold;lP1 =0;lP2 =0;lS1 = 0;lS2 = 0;for (i = iMinGrayValue;i iThreshold;i+) /求两个区域的灰度平均值lP1 += lHistogrami*i;lS1 += lHistogrami;iMean1GrayValue = (unsigned char)(lP1 / lS1);for (i = iThreshold+1;i iMaxGrayValue;i+) lP2 += lHistogrami*i;lS2 += lHistogrami;iMean2GrayValue = (unsigned char)(lP2 / lS2);iNewThreshold = (iMean1GrayValue + iMean2GrayValue)/2;for (i = 0;i lWidth ;i+) /根据阈值将图像二值化for(j = 0;j lHeight ;j+)lpSrc = (char *)lpDIBBits + lLineBytes * j + i; /lpDst = (char *)lpNewDIBBits + lLineBytes * j + i;pixel = (unsigned char)*lpSrc;if(pixel 1)物体灰度区间以改善图像;同样如果图像灰度集中在较亮的区域而导致图像偏亮,也可以用灰度拉伸功能来压缩(斜率1)物体灰度区间以改善图像质量。n Visual C+ 程序如下:int CDib:GrayStretch(unsigned char* image,LONG dwWidth,LONG dwHeight,WORD wBitCount,int pt1x,int pt1y,int pt2x,int pt2y) LONG n , I , j ;BYTE map300;LONG dwLineBytes = WIDTHBYTES(dwWidth *8);unsigned char *lpSrc;for (n=0; n0) mapn=(BYTE)pt1y*n/pt1x; /定义0点到点pt1之间新的灰度级,线性拉伸 else mapn=0; /定义0点之前的灰度级全为0 for (; n=pt2x; n+) if (pt2x!=pt1x) /定义点pt1到点pt2之间新的灰度级,线性拉伸 mapn=pt1y+(BYTE)(pt2y-pt1y)*(n-pt1x)/(pt2x-pt1x);else mapn=pt1y;for (; n256; n+) if (pt2x!=255) /定义点pt2到点(255,255)之间新的灰度级,线性拉伸 mapn=pt2y+(BYTE)(255-pt2y)*(n-pt2x)/(255-pt2x);else mapn=255; if (wBitCount=8) for (i=0; idwHeight; i+) for (j=0; jdwWidth; j+) /计算像素点的灰度级 lpSrc=(unsigned char *)(image+dwLineBytes*(dwHeight-1-i)+j);*lpSrc=map*lpSrc; /为像素点赋上新的灰度级return TRUE;n 效果对比图: 图2.3 原图(左)和灰度拉伸后的图(右)2.5 均值滤波:均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素(以目标象素为中心的周围8个象素,构成一个滤波模板,即去掉目标象素本身)。再用模板中的全体像素的平均值来代替原来像素值。均值滤波本身存在着固有的缺陷,即它不能很好地保护图像细节,在图像去噪的同时也破坏了图像的细节部分,从而使图像变得模糊,不能很好地去除噪声点。n Visual C+ 程序如下:int JZLB(unsigned char * image , LONG dwWidth , LONG dwHeight , WORD wBitCount ) unsigned char* lpSrc;unsigned char* lpDst;float temp; long linebyte; linebyte=WIDTHBYTES(dwWidth*8);if(wBitCount=8)/灰度图像 for(int i=1;idwHeight-1;i+)for(int j=1;jdwWidth-1;j+)lpDst=(unsigned char*)image+linebyte*i+j;temp=0;for(int k=0;k3;k+)for(int l=0;l3;l+)lpSrc=(unsigned char*)image+linebyte*(i-1+k)+j+l-1;temp+=*lpSrc;*lpDst=temp/9;elseAfxMessageBox(非灰色图!,MB_OK,0);return TRUE;n 效果对比图:图2.4 原图(左)与均值滤波后的效果图(右) 2.6 中值滤波:中值滤波法是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值。中值滤波在图像处理中,常用于用来保护边缘信息,是经典的平滑噪声的方法。对椒盐噪声非常有效。n Visual C+ 程序如下:int ZZLB(unsigned char* image , LONG dwWidth , LONG dwHeight , WORD wBitCount)LONG i , j , k , l , x , y;unsigned char * lpSrc;unsigned char * lpDst;unsigned char temp;long linebyte;linebyte=WIDTHBYTES(dwWidth*8);unsigned char math9;if(wBitCount=8) for(i=1;idwHeight-1;i+) for(j=1;jdwWidth-1;j+) lpDst=(unsigned char*)image+linebyte* i+j;for(k=0;k3;k+) for(l=0;l3;l+) lpSrc=(unsigned char*)image+linebyte*(i+k-1)+j+l-1;math3*k+l=*lpSrc;for(x=0;x8;x+)for(y=0;ymathy+1) temp=mathy;mathy=mathy+1;mathy+1=temp;*lpDst=math4; elseAfxMessageBox(非灰色图!,MB_OK,0);return TRUE;n 效果对比图:图 2.5 原图(左)与中值滤波后的效果图
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电动车安全知识宣传教育
- 全民健康教育知识讲座
- 2025届西平县三上数学期末预测试题含解析
- 渠县红色文化传承与发展
- 知识产权保护教学课件
- 基础会计习题及答案
- 工厂电气安全培训课件
- 水利水电工程专业知识试题及答案2024
- 在线支付服务协议条款和细则
- 旅游景点规划与设计知识要点
- 2025年入团考试各科目试题及答案分析
- 成都设计咨询集团有限公司2025年社会公开招聘(19人)笔试参考题库附带答案详解
- 2025年高三高考冲刺主题教育班会:《高三考前心理调适指南:减压赋能 轻松备考》-2024-2025学年高中主题班会课件
- 学校设计施工及运营一体化(EPC+O)招标文件
- 《动物繁殖技术》课件
- 《胸部恶性肿瘤》课件
- 2025年广东中考英语三年真题试题分析及备考建议(课件)
- 仓储管理考试试题及答案
- 工程据实结算合同协议
- 2025年山东省中考统考数学模拟试卷(含答案)
- 钠及其重要化合物-高考化学一轮复习知识清单
评论
0/150
提交评论