欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    数字图像处理实验报告(共43页).docx

    • 资源ID:13920568       资源大小:3.32MB        全文页数:43页
    • 资源格式: DOCX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数字图像处理实验报告(共43页).docx

    精选优质文档-倾情为你奉上数字图像处理实验报告专 业: 软件工程 姓 名: 王鹏飞 学 号: S 指导老师: 王素玉 2019年 12 月 28 日信息学部软件学院专心-专注-专业目录实验要求:用 c/c+语言编程实现以下功能实验环境:Windows10开发工具:CodeBlocks实验一、BMP文件的读写1 实验目的与实验内容1.1灰度 BMP 图像的读写: (1) 读入 lena.bmp 文件; (2) 通过文件内容得出文件大小,位图数据起始字节,图像长、宽以及每像素的位数等信息; (3) 提取出原图像中的位图数据,另存为 lena.raw, 并通过 photoshop 打开该 文件,查看所读取的数据。 (4) 仅取原始图像左上角 1/4 的数据,另存一个 lenas.bmp 图像,在 photoshop 中打开查看效果。1.2 彩色 BMP 图像读写 (1) 读入文件 lena_C.bmp 文件; (2) 通过文件内容得出文件大小,位图数据起始字节,图像长、宽以及每像素 的位数等信息; (3) 提取出原图像中的位图数据,另存为 lena_C.raw, 并通过 photoshop 打开 该文件,查看所读取的数据。 (4) 仅取原始图像左上角 1/4 的数据,另存一个 lena_Cs.bmp 图像,在 photoshop 中打开查看效果。 2 实验原理通过C语言读取BMP文件,读入图像的文件指针、宽、高、颜色表、图像类型、每像素位数。BMP文件的数据按照从头文件开始的顺序分为BMP头、位图信息头、调色板、位图数据。3 实验关键代码源代码如下: /申请位图文件头结构变量,填写文件头信息 BITMAPFILEHEADER fileHead;    fileHead.bfType = 0x4D42;/bmp类型    /bfSize是图像文件4个组成部分之和    fileHead.bfSize= sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)        + colorTablesize + lineByte*height;    fileHead.bfReserved1 = 0;    fileHead.bfReserved2 = 0;    /bfOffBits是图像文件前3个部分所需空间之和    fileHead.bfOffBits=54+colorTablesize;    /写文件头进文件    fwrite(&fileHead, sizeof(BITMAPFILEHEADER),1, fp2);    /申请位图信息头结构变量,填写信息7头信息    BITMAPINFOHEADER head;     head.biBitCount=biBitCount;    head.biClrImportant=0;    head.biClrUsed=0;    head.biCompression=0;    head.biHeight=height;    head.biPlanes=1;    head.biSize=40;    head.biSizeImage=lineByte*height;    head.biWidth=width;    head.biXPelsPerMeter=0;    head.biYPelsPerMeter=0;    /写位图信息头进内存    fwrite(&head, sizeof(BITMAPINFOHEADER),1, fp2);    /如果灰度图像,有颜色表,写入文件 RGBQUAD *pColorTable1; if(biBitCount=8)        pColorTable1=new RGBQUAD256;        fread(pColorTable1,sizeof(RGBQUAD),256,fp1);        if(biBitCount=8)        fwrite(pColorTable1, sizeof(RGBQUAD),256, fp2);    /写位图数据进文件int y = (biWidth * biBitCount/8+3)/4*4;fseek(fp1, -y*biHeight/2,2);long q; if(q=ftell(fp1)=-1L)                puts("GetBitmapHeader读取文件指针位置失败!");          return 0;        else     printf("起始字节:%dn",q);pBmpBuf1=new unsigned charlineByte*biHeight;printf("hello world1");int t;for(t=0;t<biHeight/2;t+)fread(pBmpBuf1,1,y/2,fp1);fseek(fp1,y/2,1);fwrite(pBmpBuf1,y/2,1,fp2);fclose(fp2);fclose(fp1);return 1;4 实验运行结果(1)灰度图像运行结果 灰度图lena.bmp文件 lenas.bmp文件由运行结果可知该灰度图的大小为字节,长和宽都为512字节,每个像素的位数为8位,位图数据起始字节为字节。(2)彩色图像运行结果 lena_C.bmp文件 lena_Cs.bmp文件由运行结果可知,该彩色图像的大小为字节,长和宽均为512字节,每个像素的位数为24位,位图数据起始字节为字节。5 总结通过本次实验,学会了如何读取BMP图像中的信息,尤其是BMP中的信息变量设置较多,这点存在很大的难度。实验二、图像缩放1 实验目的及内容2.1 灰度图像最近邻缩放: (1) 读入 lena.bmp 文件; (2) 采用最近邻方法将原图长宽各缩小 2 倍,即隔 1 点取 1 点,存为 lenas.bmp; (3) 采用最近邻方法将 lenas.bmp 重新放大到原来的尺寸,存为 lenasz.bmp, 比较其与原图 lena.bmp 的区别; (4)将缩放倍数改为 4 重复上述步骤。2.2 灰度图像双线性插值缩放 (1) 读入文件 lena.bmp 文件;(2) 采用双线性插值法将图像缩小 2 倍(将源图像相邻两个像素平均后作为一个像素),存为 lenas1.bmp; (3) 将缩小后的图像放大回原来的尺寸,存为 lenasz1.bmp,对比其与原始图 像 lena.bmp 的异同。 (4) 将放大倍数改为任意值,重复以上步骤。 2.3 将灰度图改为彩色图像重复 1、2 内容。2 实验原理2.1 最近邻缩放原理不需要计算,在待求象素的四邻象素中,将距离待求象素最近的邻象素灰度赋给待求象素。设i+u, j+v(i, j为正整数, u, v为大于零小于1的小数,下同)为待求象素坐标,则待求象素灰度的值 f(i+u, j+v),如下图所示:如果(i+u, j+v)落在A区,即u<0.5, v<0.5,则将左上角象素的灰度值赋给待求象素,同理,落在B区则赋予右上角的象素灰度值,落在C区则赋予左下角象素的灰度值,落在D区则赋予右下角象素的灰度值。最邻近元法计算量较小,但可能会造成插值生成的图像灰度上的不连续,在灰度变化的地方可能出现明显的锯齿状。2.2 双线性插值法原理双线性插值原理图,x-y坐标系、已知Q12,Q22,Q11,Q21四个点的值,求P点值。 首先在Q11Q21、Q12Q22方向上进行两次线性插值,得到R1、R2;然后在R1R2方向再做一次线性插值,得到P点。这就是双线性插值。双线性插值关键的是P点在x,y两个方向上相对已知Q点的位置。令: = (x-x1) / (x2-x1)      =  (y-y1) / (y2-y1)  ,则 R1 = Q11 + (Q21 - Q11) *   = (1 - )*Q11 + *Q21,R2 = Q12 + (Q22 - Q12) *   = (1 - )*Q12 + *Q22;P = (1 - )*R1 + *R2 =  (1 - )(1 - )*Q11 +  (1 - )*Q21 +  *(1 - )*Q12 + *Q22 =  (1 - )*(1 - )*Q11 + *Q12 ) + *( (1 - )*Q21 + *Q22)3 实验关键代码和运行结果最邻近插值法主要代码:for (int i = 0; i < dstHeight; +i)for (int j = 0; j < dstWidth; +j)unsigned char *p1, *p2;x = round(double(1/lx*j);y = round(double(1/ly*i);p1 = (unsigned char *)(pBmpBuf2 + i*lineByte2 + j);p2 = (unsigned char *)(pBmpBuf + y*lineByte + x);(*p1) = (*p2);方法二:双线性插值法:int x1, x2, y1, y2, Fq11, Fq12, Fq21, Fq22;double x, y, r1, Fr1, Fr2, Fp;for (int i = 0; i < dstHeight; +i)for (int j = 0; j < dstWidth; +j)unsigned char *p1, *p2;x = 1 / lx*j; / 原图像坐标y = 1 / ly*i;/ 四个坐标值x1 = floor(x); x2 = x1 + 1;/ 取整ceil向上,floor向下y1 = floor(y); y2 = y1 + 1;/ 四个坐标对应的灰度值Fq11 = *(pBmpBuf + y1*lineByte + x1);Fq12 = *(pBmpBuf + y2*lineByte + x1);Fq21 = *(pBmpBuf + y1*lineByte + x2);Fq22 = *(pBmpBuf + y2*lineByte + x2);/ x方向插值和y方向插值Fr1 = 0; Fr2 = 0; Fr1 = (x2 - x) / (x2 - x1)*Fq11 + (x - x1) / (x2 - x1)*Fq21;Fr2 = (x2 - x) / (x2 - x1)*Fq12 + (x - x1) / (x2 - x1)*Fq22;Fp = (y2 - y) / (y2 - y1)*Fr1 + (y - y1) / (y2 - y1)*Fr2;/ 新图像灰度值赋值if (Fp >= 0 && Fp <= 255)p1 = (unsigned char *)(pBmpBuf2 + i*lineByte2 + j); / 新图像(*p1) = round(Fp);(1)灰度图像最近邻缩放: 灰度图像最近邻两倍缩放 灰度图像最近邻两倍缩放后两倍放大 灰度图像最近邻四倍缩放 灰度图像最近邻四倍缩放后四倍放大(2)灰度图像双线性插值缩放: 灰度图像双线性两倍缩放 灰度图像双线性两倍缩放后两倍放大 灰度图像双线性四倍缩放 灰度图像双线性四倍缩放后四倍放大4 结果分析通过本实验完成了灰度图最近邻方法和双线性方法的图像缩放,通过对最近邻方法和双线性方法的对比实验得知双线性插值的方法更加能够保留原图像的信息,清晰度更好并且信息更加完整,而最近邻的方法原理简单,效果较差,可以看出缩小四倍之后再方法四倍得到的图像具有很明显的模糊现象。实验三、直方图均衡1 实验目的及内容(1) 读入 image1.bmp 文件; (2) 根据直方图均衡原理编写程序代码; (3) 对所给的灰度图像进行直方图均衡,测试算法性能; (4) 均衡后效果的对比与评价; (5) 思考:彩色图像 image_color 能否进行直方图均衡?如何进行? 2 实验原理直方图均衡化就是将原图像通过某种变换,得到一幅灰度直方图未均匀分布的新图像的方法,直方图均衡化的基本思想是对图像中像素个数多的灰度级进行展宽,而对像素个数少的灰度级进行缩减,从而达到清晰图像的目的。直方图均衡化计算步骤:(1)确定图像的灰度级我们要处理的图像是灰度图像,如果是彩色的,需要先转化成灰度图像,然后确定图像的灰度级有多大,一般就是8位的图像,灰度级为0-255,上标示例中的是3位的,灰度级为0-7。(2)计算原始直方图分布概率p(i)也就是统计每一个灰度在整个图像中像素个数的占比,总和为1。记第i个灰度的直方图分布概率为p(i)。(3)计算直方图概率累计值s(i)这里s(0)=p(0);      s(1)=p(0)+p(1);      s(i)=p(0)+p(1)+p(i)    where(i>1)。(4)根据公式求取像素映射关系ss(i)=intmax(pix)-min(pix)*s(i)+0.5其中,pix指原图像中的灰度值,需要求取原图像中的最大灰度值减去最小灰度值。而有的均衡化理论中是(2n-1)-0,也就是该灰度级中的最大值减去灰度最小值。ss(i)是第i灰度级所对应的均衡化图像中的灰度级。(5)灰度映射上一步找到了原图像和均衡化图像灰度的对应关系,对原图进行操作,将每个像素映射成新的像素即可。3 实验关键代码和实验结果关键代码如下:void savefile(char *filename ,char *filename1,unsigned char *image2000,int w,int h)FILE *fp=fopen(filename,"rb");if(fp=NULL)cout<<"can not open this file.n"return;FILE *fp1=fopen(filename1,"wb");if(fp1=NULL)cout<<"can not open this file1.n"return;BITMAPFILEHEADER bf;fread(&bf,sizeof(BITMAPFILEHEADER),1,fp);BITMAPINFOHEADER info;fread(&info,sizeof(BITMAPINFOHEADER),1,fp);RGBQUAD *rgb;rgb=(RGBQUAD *)malloc(256*sizeof(RGBQUAD);fread(rgb,sizeof(RGBQUAD),256,fp);fwrite(&bf,sizeof(BITMAPFILEHEADER),1,fp1);fwrite(&info,sizeof(BITMAPINFOHEADER),1,fp1);fwrite(rgb,sizeof(RGBQUAD),256,fp1);unsigned char *image12000;int law_size;law_size=(w+3)/4*4;int i,j;for(i=0;i<h;i+)image1i=new unsigned char law_size;for(i=0;i<h;i+)for(j=0;j<law_size;j+)image1ij=0;int n256=0;double a;double p256;for(i=0;i<h;i+) for(j=0;j<law_size;j+) nimageij+; for(i=0;i<256;i+) a=(double)(ni)/(1.0*(h*law_size); pi=a;double s256=0;s0=p0;for(i=1;i<256;i+) si=pi+si-1;for(i=0;i<h;i+)for(j=0;j<law_size;j+)image1ij=(int)(simageij*255+0.5);for(i=0;i<h;i+)fwrite(image1i,sizeof(unsigned char),law_size,fp1);fclose(fp1);fclose(fp);实验结果 直方图均衡化原图像 直方图均衡化实验结果图像 彩色图像均衡化处理后4 思考题彩色图像 image_color 能否进行直方图均衡?如何进行?由于直方图均衡是对于灰度图的图像处理方法,它是利用图像直方图对对比度进行调整的方法。因此直方图均衡并不能直接用于彩色图像的处理。但是由于彩色图像的本质是由R、G、B三个通道的灰度值组合而成的一个图像,因此可以通过对R、G、B三个通道分别使用直方图均衡之后将其组合起来从而达到对彩色图像的直方图均衡化,但是这样有可能会改变原图像的色调,因为对R、G、B三通道的灰度值改变了以后图像的叠加会出现一些不同的颜色,这个是难以避免的。其计算过程见附录一。5结果分析通过实验结果来看,经过直方图均衡处理之后的图像与原图像对比明显,可以清晰地看到处理之后比处理之前的图像的亮度更好,对比度更高,算法较为完整,能够成功地达到实验目的,将原图进行处理之后得到更好。实验四、图像滤波1 实验目的及内容(1) 读入图像 lena1.bmp 和 lena2.bmp; (2) 分别利用盒滤波器、加权平均滤波器和邻域平均滤波器对其进行滤波,对 比结果; (3) 用中值滤波器分别对上述两幅图像进行滤波,将模板分别设为 3×3、5×5、 7×7,对比不同的滤波效果; (4) 读入图像 lena.bmp,分别采用 Laplace 算子和复合 Laplace 算子对其进行 滤波,对比实验结果; (5) 对 lena.bmp,采用 Robet 算子和 Sobel 算子进行滤波,对比结果; 2 图像滤波的原理图像信息在采集过程中往往受到各种噪声源的干扰,这些噪声在图像上的常常表现为一些孤立像素点,这可理解为像素的灰度是空间相关的,即噪声点像素灰度与它们临近像素的灰度有着显著不同。通常,一般的前置图像处理后的图刺昂仍然带有后续所不希望夹带的孤立像素点,这种干扰或孤立像素点如不经过滤波处理,会对以后的图像区域分割、分析和判断带来影响。对受到噪声污染的图像可以采用线性滤波的方法来处理,但是很多线性滤波有低通性,在去噪声的同时也使得边缘模糊了,中值滤波在某些情况下可以做到既去除噪声又保护图像的边缘,是一种非线性的去噪声的方法。3 实验关键代码及结果3.1盒滤波器void meanFilter (unsigned char* corrupted, unsigned char* smooth, int width, int height)memcpy ( smooth, corrupted, width*height*sizeof(unsigned char) );for (int j=1;j<height-1;j+)for (int i=1;i<width-1;i+)smooth j*width+i = (corrupted (j-1)*width+(i-1) + corrupted (j-1)*width+i + corrupted (j-1)*width+(i+1) +corrupted j*width+(i-1) + corrupted j*width+i + corrupted j*width+(i+1) +corrupted (j+1)*width+(i-1) + corrupted (j+1)*width+i + corrupted (j+1)*width+(i+1) ) / 9; lena1 lena23.2 加权平均滤波器 lena1 lena23.3 邻域平均滤波器int pixelByte = m_nBitCountOut / 8;for(i = 0; i < m_imgHeight; i+)for(j = 0; j < m_imgWidth * pixelByte; j+)*(m_pImgDataOut+i*lineByteOut+j)= *(m_pImgData+i*lineByteOut+j);/行处理(去掉边缘几行)for (i = inputY0; i < m_imgHeight - inputH + inputY0 + 1; i+)/列处理(去掉边缘几列)for (j = inputX0; j < m_imgWidth - inputW + inputX0 + 1; j+)/指向新DIB第i行第j列的像素的指针pDst = m_pImgDataOut + lineByte * (m_imgHeight - 1 - i) + j;value=0;/计算for (k = 0; k < inputH; k+)for (l = 0; l < inputW; l+)pSrc = m_pImgData + lineByte * (m_imgHeight - 1 - i + inputY0 - k) + j - inputX0 + l;/计算加权平均,保存像素值value += (*pSrc) * pTemplatek * inputW + l; lena1 lena23.4 中值滤波器void MedianFlitering(Mat &src, Mat &dst, int k)Mat im,m1, m2, m3, m4, m5, m6, B, G, R;vector <Mat> channels;split(src, channels);B = channels.at(0);G = channels.at(1);R = channels.at(2);/通道分离int a = src.rows;int b = src.cols; /获得行和列for (int i = k/2; i < a - k/2; i+)/遍历图像,注意要把边框部分去除了 for (int j = k/2; j < b - k/2; j+) m1 = B(Rect(j - k/2, i - k/2, k, k).clone();/选取k*k窗口中的B通道m2 = G(Rect(j - k / 2, i - k / 2, k, k).clone();/选取k*k窗口G通道m3 = R(Rect(j - k / 2, i - k / 2, k, k).clone();/选取k*k窗口R通道m1 = m1.reshape(1, 1);m2 = m2.reshape(1, 1);m3 = m3.reshape(1, 1); /像素值将其变为一行cv:sort(m1, m4, 0);cv:sort(m2, m5, 0);cv:sort(m3, m6, 0);/对其排序int p0 = m4.at<uchar>(0, k*k/2+1);int p1 = m5.at<uchar>(0, k*k / 2 + 1);int p2 = m6.at<uchar>(0, k*k / 2 + 1);/选取各通道的像素中值点dst.at<Vec3b>(i - k/2, j - k/2)0 = p0;dst.at<Vec3b>(i - k/2, j - k/2) 1= p1;dst.at<Vec3b>(i - k/2, j - k/2) 2= p2;/对其进行重赋值imshow("Annie", dst);waitKey(0);lena1通过模板分别为3x3,5x5,7x7中值滤波后,所得结果如下: lena2通过模板分别为3x3,5x5,7x7中值滤波后,所得结果如下: 3.5 Laplace 算子3.6 Robet算子void Robert(double *src,double *dst,int width,int height)    double RobertMask_x9=0,0,0,0,-1,0,0,0,1;    double RobertMask_y9=0,0,0,0,0,-1,0,1,0;    double *dst_x=(double *)malloc(sizeof(double)*width*height);    double *dst_y=(double *)malloc(sizeof(double)*width*height);    RealConvolution(src, dst_x, RobertMask_x, width, height, ROBERT_MASK_SIZE,ROBERT_MASK_SIZE);    RealConvolution(src, dst_y, RobertMask_y, width, height, ROBERT_MASK_SIZE,ROBERT_MASK_SIZE);    for(int j=0;j&lt;height;j+)        for(int i=0;i&lt;width;i+)            dstj*width+i=abs(dst_xj*width+i)+abs(dst_yj*width+i);            free(dst_x);    free(dst_y); void RobertSharpen(double *src,double *dst,int width,int height,double c)    Robert(src,dst,width,height);    for(int j=0;j&lt;height;j+)        for(int i=0;i&lt;width;i+)            dstj*width+i=srcj*width+i+c*dstj*width+i;        3.7 sobel算子    for(int j=0;j&lt;height;j+)        for(int i=0;i&lt;width;i+)            dstj*width+i=abs(dst_xj*width+i)+abs(dst_yj*width+i);            free(dst_x);    free(dst_y);void SobelSharpen(double *src,double *dst,int width,int height,double c)    Sobel(src,dst,width,height);    for(int j=0;j&lt;height;j+)        for(int i=0;i&lt;width;i+)            dstj*width+i=srcj*width+i+c*dstj*width+i;        实验五、图像的灰度映射1 实验目的及内容(1) 读入图像 image1.bmp 和 image2.bmp; (2) 分别利用对数变换、幂次变换和分段线性变换对上述图像进行灰度映射; (3) 通过设定不同的参数,寻求对于每幅图像最优的变换结果; (4) 读入彩色图像 imagec.bmp,重复上述实验步骤。2 实验关键代码及结果2.1对数变化Mat LogTransform(Mat src, double parameter)vector<double> value;for(int r = 0;r < src.rows;r+)uchar* rowData = src.ptr<uchar>(r);for(int c = 0;c < src.cols;c+)/对数变换公式s = c * log(1 + v * r) / log(v + 1)/其中r为输入图像像素,c为常数,v + 1为对数底value.push_back(log(1 + parameter * rowDatac) / log(parameter + 1);/计算得出的s经过对比拉升(将像素值归一化到0-255)得到最终的图像return Normalize(value, 255, src.rows, src.cols, src.type(); 原图 变换后的图2.2 幂次变换Mat PowerTranseform(Mat src, double gamma, int parameter)Mat dst;dst.create(src.size(), src.type();vector<double> value;for(int r = 0;r < src.rows;r+)uchar* srcRowData = src.ptr<uchar>(r);for(int c = 0;c < src.cols;c+)/幂次变换的公式为 s = c * r vr为输入图像像素value.push_back(parameter * pow(double)srcRowDatac, gamma);return Normalize(value, 255, src.rows, src.cols, src.type(); 原图 变换后的图2.3 分段线性变换Mat Stretch(Mat input, int r1, int s1, int r2, int s2)int h input.rows ;/ 图片高int w input.cols ;/ 图片宽Mat out h, w, CV_8UC1 ;/ 输出图片uchar* data_in input.data ;/ 原图图片像素数据uchar* data_out out.data ;/ 输出图片像素数据double data;/ 临时灰度值double a, a1, a2, a3, b, b1, b2, b3;/ 直线斜率与截距a1 = (double)s1 / (double)r1;b1 = 0;a2 = (double)(s2 - s1) / (double)(r2 - r1);b2 = s1 - a2*r1;a3 = (255.0 - s2) / (255.0 - r2);b3 = s2 - a3*r2;for (int y = 0; y < h; y+)for (int x = 0; x < w; x+)data = data_iny*w + x;if (data <= r1)a = a1; b = b1;else if (data >= r2)a = a3; b = b3;elsea = a2; b = b2;data = a*data + b;data_outy*w + x = (uchar)(data);return out; 原图 变换后的图3 不同参数的变换结果 参数为1.5的对数变换

    注意事项

    本文(数字图像处理实验报告(共43页).docx)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开