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

    数字图像处理试题目库.doc

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

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

    数字图像处理试题目库.doc

    【精品文档】如有侵权,请联系网站删除,仅供学习与交流数字图像处理试题目库.精品文档.试题库一、填空题:1彩色图像的灰度化处理,将真彩色图像转化成256色灰度图像。要求:转换关系为:Gray(i,j)=0.11R(i,j)+0.59G(i,j)+0.3B(i,j)(1) 获取原图像像素的首地址,及图像的高度和宽度; (2) 得到像素的蓝、绿、红的三个分值;(3) 按照公式要求,计算Gray(i,j);(4) 将该值返回给蓝、绿、红三个分量。void MakeColorDib:MakegGray() BYTE *p_data; int wide,height,DibWidth; p_data=this->GetData (); wide=this->GetWidth (); height=this->GetHeight (); DibWidth=this->GetDibWidthBytes(); for(int j=0;j< height;j+ )for(int i=0;i< DibWidth;i+=3)BYTE* pbyBlue = p_data+; /得到蓝色值BYTE* pbyGreen = p_data+; /得到绿色值BYTE* pbyRed = p_data+; /得到红色值BYTE r = *pbyRed; BYTE g = *pbyGreen; BYTE b = *pbyBlue; gray =0.11*r+0.59*g+0.3*b *pbyBlue = gray; /将取到的最大值赋给像素的蓝分量*pbyGreen = gray; /将取到的最大值赋给像素的绿分量*pbyRed = gray; /将取到的最大值赋给像素的红分量for(int j= height/3;j<2*height/3;j+) / 每行for(int i=0;i<DibWidth;i+) / 每列int a=*p_data; /取得当前点的值*p_data=255-a; /取反p_data+; /指向下一指针 for(int j=2*height/3;j<height;j+) / 每行for(int i=0;i<DibWidth;i+) / 每列BYTE* pbydata = p_data+; /取得当前点的值BYTE a=*pbydata; /传给临时变量*pbydata=(a>128)?a:(255-a); /调整2目标物体的轮廓提取。要求:(1)获取原图像像素的首地址,及图像的高和宽;(2)开辟一块内存缓冲区,存储处理后的图像像素;(3)计算图像的平均灰度值,以平均灰度值作为阈值T;(4)对图像进行二值化预处理,像素灰度值大于T的置白,否则置黑;(5)将像素点的8邻域像素读入数组中,如果8个邻域像素都和中心点相同,在内存缓区将该像素点置白,否则保持不变;(6)重复执行(3),对每一个像素进行处理;(7)将处理后的图像数据复制到原图像中。void BingXingBianJieDib:Lunkuotiqu()LPBYTE p_data, lpSrc; int wide,height; int i,j; int n1,n2,n3,n4,n5,n6,n7,n8; lpSrc=this->GetData();p_data=lpSrc;wide=this->GetWidth ();height=this->GetHeight ();/计算图像的平均灰度值T,再进行二值化预处理,像素灰度值大于T的置白,否则置黑。for(j=0;j<height;j+) /对图像进行二值化预处理for( i=0;i<wide;i+) if(*p_data>128) *p_data=255;else *p_data=0; p_data+;p_data=lpSrc; LPBYTE temp=new BYTEwide*height; memset( temp,255,sizeof( temp); for(j=1;j<height-1;j+)for(i=1;i<wide-1;i+) if(p_dataj*wide+i=0) tempj*wide+i=0; n1= p_data(j+1)*wide+i-1; n2= p_data(j+1)*wide+i; n3= p_data(j+1)*wide+i+1; n4= p_dataj*wide+i-1; n5= p_dataj*wide+i+1; n6= p_data(j-1)*wide+i-1; n7= p_data(j-1)*wide+i; n8= p_data(j-1)*wide+i+1; /如果相邻的八个点都是黑点 if(n1+n2+n3+n4+n5+n6+n7+n8=0) tempj*wide+i=255; memcpy(lpSrc, temp,wide*height); delete temp; 3编程实现分别统计24位真彩色图像R、G、B直方图。要求:本程序功能是对24位真彩色图像的R、G、B分别进行直方图统计,R、G、B分布密度分别放在数组tongji_RED , tongji_GREEN , tongji_ BLUE 里。请将程序代码补充完整。void HuiDuBianHuanDib:ZhiFangTu(float *tongji_RED, float *tongji_GREEN, float *tongji_BLUE)int i,j;int wide,height; LPBYTE p_data; p_data=this->GetData();height=this->GetHeight ();wide=this->GetWidth ();4根据结构编程实现图像的闭运算。要求:(1)得原图像的首地址及图像的宽和高。(图像已经二值化,背景为白,物体为黑)。(2)辟一块内存缓冲区,并初始化为255。(3)定义一个结构数组B9。B 9 = (4)为防越界,不处理最左边、最右边、最上边和最下边四边的像素,从第2行第2列开始进行闭运算。(5)循环步骤4,直到处理完原图的全部像素点。(6)将结果从内存复制到原图的数据区。void FuShiYuPengZhangDib:Onfushi() int i,j,m,n;LPBYTE p_data;LPBYTElpSrc;LPBYTElpDst;LPBYTEtemp;p_data = GetData();LONG wide= GetWidth();LONG height =GetHeight();temp =new BYTEwide*height;lpDst = (LPBYTE)temp;memset(lpDst, (BYTE)255, wide * height);/ 3×3的结构元素int B9 = 1, 0, 1,0, 0, 0,1, 0, 1;/ 使用全方向的结构元素进行腐蚀for (j = 1; j < height - 1; j+)for (i = 1; i < wide - 1; i+)/ 由于使用3×3的结构元素,为防止越界,所以不处理最左、右、上、下四/边的像素/ 指向源图像倒数第j行,第i个象素的指针lpSrc = (unsigned char *)(p_data + wide * j + i);/ 指向目标图像倒数第j行,第i个象素的指针lpDst = (unsigned char *)(temp + wide * j + i);/ 目标图像中的当前点先赋成黑色*lpDst = 0;/ 如果源图像中3×3结构元素对应位置有白点/ 则将目标图像中的(0,0)点赋成白色for (m = 0; m < 3; m+)for (n = 0; n < 3; n+)if (Bm + n = 1)continue;if (*(lpSrc + (1 - m) * wide +(n - 1) ) > 128)*lpDst = 255;break;memcpy(p_data, temp, wide * height);delete temp;5编程实现图像的渐隐。要求:显示一幅位图,像素浓度由亮到暗,逐渐减弱,直至全黑。请写出渐隐的程序代码。void CDynSplitView2:OnJianyin() CDC *pDC=GetDC();CRect rect(0,0,1000,1000);CBrush brush(RGB(255,255,255);pDC->FillRect(&rect,&brush);clearmem();CDSplitDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);if(!pDoc ->statedoc&&state2=1 ) BYTE* pBitmapData = CDibNew1->GetData(); LPBITMAPINFO pBitmapInfo = CDibNew1->GetInfo(); int bitmapHeight= CDibNew1->GetHeight(); int bitmapWidth = CDibNew1->GetWidth();if (CDibNew1->GetRGB() / Has a color tableCPalette* hPalette=CreateBitmapPalette(CDibNew1);CPalette * hOldPalette =pDC->SelectPalette(hPalette, true);pDC->RealizePalette();LPBYTE temp,temp1,temp2;temp=new BYTECDibNew1->GetHeight()*CDibNew1->GetHeight();memset (temp,0,CDibNew1->GetHeight()*CDibNew1->GetHeight();for(int n=0;n<=256 ; n+ )temp1=temp temp2=pBitmapData for(int j=0;j<bitmapHeight ; j+) for(int i=0;i< bitmapWidth; i+ )*temp1=(*temp2)*n/256;temp1+; temp2+; /显示图像:StretchDIBits(pDC->GetSafeHdc(),0, 0, bitmapWidth, bitmapHeight,0, 0, bitmapWidth, bitmapHeight,temp,pBitmapInfo,DIB_RGB_COLORS, SRCCOPY);Sleep(0.0005);pDC->SelectPalette(hOldPalette, true);:DeleteObject(hPalette);delete temp;6对灰度图像进行N×N十字型中值滤波处理。要求:(1)取得图像大小、数据区,并把数据区复制到缓冲区中;(2)取得N值;(3)循环取得各点像素值;(4)对以该点为中心的N*N十字型屏蔽窗口包括的各像素值进行排序,得到中间值;(5)把该点像素值置为中间值;(6)把缓冲区中改动的数据复制到原数据区中。void ZaoShengXiaoChuDib:nnzhong(int n)DWORD size;size=GetSize();BYTE* p_temp=new BYTE size;memset(p_temp,255,size);int yy,xx,n2,nn,chuo,chg,m,medi,madom,mado1000;BYTE *p_data; int wide,height; if(n<3|n%2!=1)AfxMessageBox("请输入一个大于等于3的奇数");if(n>=3&&n%2=1)n2=(n-1)/2;nn=n*n;chuo=(nn-1)/2;p_data=this->GetData();wide=this->GetWidth(); height=this->GetHeight(); for(int j=n2;j<height-n2;j+)for(int i=n2;i<wide-n2;i+)m=0;for(yy=j-n2;yy<=j+n2;yy+)madom=p_datayy*wide+i;m+;for(xx=i-n2;xx<=i+n2;xx+)if(xx=i)continue;madom=p_dataj*wide+xx;m+;/把madom中的值按下降顺序用冒泡法排序do chg= 0 for(m=0;m< nn-1 ; m+ )if(madom<madom+1) madom=madom; madom=madom+1; madom+1=madom; chg=1; while(chg=1); medi=madochuo; p_tempj*wide+i=medi;memcpy(p_data,p_temp,size);delete p_temp;7编程实现灰度图像的伪彩色处理。要求:修改颜色索引表,将灰度图像显示成彩色图像。将灰度区间表示成如下5种典型的颜色:0 ,50 表示成:黑色; 51,100 表示成:蓝色;101,150 表示成:红色; 151,200 表示成:黄色;201,255 表示成:绿色。CPalette * CDynSplitView2:CreateBitmapPalette(CDib * pBitmap)structWORD Version;WORD NumberOfEntries;PALETTEENTRY aEntries256; palette = 0x300, 256 ;LPRGBQUAD pRGBTable = pBitmap->GetRGB();UINT numberOfColors = pBitmap->GetNumberOfColors();for(UINT x=0; x<numberOfColors; +x)/请修改颜色表if(x>0)&&(x<50)if(x>51) &&(x<100)if(x>101)&&(x<150)if(x>151)&&(x<200)if(x>201)&&(x<255)palette.aEntriesx.peRed =pRGBTablex.rgbRed;palette.aEntriesx.peGreen =pRGBTablex.rgbGreen;palette.aEntriesx.peBlue =pRGBTablex.rgbBlue;palette.aEntriesx.peFlags = 0;/ hPalette已在视类定义hPalette.CreatePalette(LPLOGPALETTE)&palette);return &hPalette;8.中值滤波是指将当前像元的窗口(或领域)中所有像元灰度由小到大进行排序,中间值作为当前像元的输出值,试编程实现3×3中值滤波。原始图像的部分数据为:LPBYTE p_data;p_data = GetData();LONG wide= GetWidth();LONG height =GetHeight();答:int m;for(int j=1;j<height;j+) for(int i=1;i<wide;i+) for(int yy=j-1;yy<=j+1;yy+) for(int xx=i-1;xx<=i+1;xx+) int madom=p_datayy*wide+xx;m+; do int chg=0; for(m=0;m<8;m+) if(madom<madom+1) int madom=madom; madom=madom+1; madom+1=madom; chg=1; while(chg=1) int medi=mado4; p_dataj*wide+i=medi; 9. 完成对一幅 宽为wide, 高为 height 的灰度图像进行垂直镜像变换的程序。原始图像的部分数据为:LPBYTElpSrc; / 指向源图像的指针LPBYTE p_data; / 指向要复制区域的指针LPBYTElpDst;/ 指向复制图像的指针long height=this->GetHeight();/图像的高与宽long wide=this->GetWidth();p_data=this->GetData();答:LPBYTEtemp; LONGi; / 循环变量LONGj; temp = new BYTEwide*height; / 暂时分配内存,以保存一行图像/ 针对上半图像进行操作for(i = 0; i < wide;i+) for(j = 0; j < height; j+) lpSrc = (LPBYTE)p_data + wide * j+i; lpDst = (LPBYTE)temp + wide * (height - j - 1)+i; *lpDst = *lpSrc; memcpy(p_data,temp, wide*height); / 释放内存delete temp;10将图像中的红色球体进行左右、上下、对称复制。原图 处理后的图像void TuXianFuZhiDib:Onfuzhi() LPBYTE p_data;p_data = GetData();LONG wide= GetWidth();LONG height =GetHeight();11编程实现24位彩色图像进行处理。要求:将24位彩色图像平均分成三个等高的区域,对这三个区域分别进行灰度化处理、逆反处理、曝光处理。(1)对第一个区域进行灰度变换。Gray(i,j)=0.11R(i,j)+0.59G(i,j)+0.3B(i,j)(2)对第二个区域进行逆反处理。(3)对第三个区域进行曝光处理。void MakeColorDib:MakegChange() BYTE *p_data; int wide,height,DibWidth; p_data=this->GetData (); wide=this->GetWidth (); height=this->GetHeight (); DibWidth=this->GetDibWidthBytes(); for(int j=0;j< height/3; j+) for(int i=0;i< ; )BYTE* pbyBlue = p_data+; /得到蓝色值BYTE* pbyGreen = p_data+; /得到绿色值BYTE* pbyRed = p_data+; /得到红色值BYTE r = *pbyRed; BYTE g = *pbyGreen; BYTE b = *pbyBlue; gray =0.11*r+0.59*g+0.3*b *pbyBlue = gray; /将取到的最大值赋给像素的蓝分量*pbyGreen = gray; /将取到的最大值赋给像素的绿分量*pbyRed = gray; /将取到的最大值赋给像素的红分量for(int j= height/3;j<2*height/3;j+) / 每行for(int i=0;i<DibWidth;i+) / 每列int a=*p_data; /取得当前点的值*p_data=255-a; /取反p_data+; /指向下一指针 for(int j=2*height/3;j<height;j+) / 每行for(int i=0;i<DibWidth;i+) / 每列BYTE* pbydata = p_data+; /取得当前点的值BYTE a=*pbydata; /传给临时变量*pbydata=(a>128)?a:(255-a); /调整12彩色图像RGB颜色模型转换为YUV颜色模型。YUV颜色模式,这是电视系统中常用的颜色模式,即电视中所谓的分量(Component)信号。该模式1个亮度信号Y和两个色差信号U、V组成。它是利用了人眼对亮度信号敏感而对色度信号相对不敏感的特点,将RGB颜色通过亮度信号公式Y=029R+050G+011B转换为一个亮度信号Y和两个色差分量信号U、V,即对色差信号进行了频带压缩。RGB变换为YUV坐标转换公式如下:Y 0.299 0.587 0.114 RU = -0.1678 -0.3313 0.5 G V 0.5 -0.4187 -0.0813 B将转换后的YUV信号存储到指针p_yuvdata所指向的数据区间。void MakeColorDib:RGBMakegChangeYUV(BYTE *p_yuvdata) BYTE *p_rgbdata; int wide,height,DibWidth; p_rgbdata=this->GetData (); wide=this->GetWidth (); height=this->GetHeight (); DibWidth=this->GetDibWidthBytes(); for(int j=0;j< j<height; j+) for(int i=0;i< i<DibWidth ; i+=3)int r,g,b; r=*p_rgbdata+; g=*p_rgbdata+; b=*p_rgbdata+; *p_yuvdata= 0.299*r+0.587*g+0.114*b;p_yuvdata+; *p_yuvdata= -0.1678*r-0.3313*g+0.5*b;p_yuvdata+; *p_yuvdata= 0.5*r-0.4187*g -0.0813*b;p_yuvdata+; 13编程实现统计图像灰度直方图要求:本程序功能是对图像进行灰度直方图统计,比如图像总像素数为n,具有r灰度级的像素数为nr,则图像概率密度函数Pr(r)=nr/n 。灰度分布密度放在数组tongji 里。请将程序代码补充完整。void HuiDuBianHuanDib:ZhiFangTu(float *tongji)int i;int j;int huidu256; int wide,height; height=this->GetHeight ();wide=this->GetWidth ();LPBYTE temp1=new BYTEwide*height; memcpy(temp1,m_pData,wide*height );for(i=0;i< height ; i+ )for(j=0;j< wide ; j+ )ussigned char temp=p_temp1wide*i+j huidutemp+; for(i=0;i< 256 ; i+ )tongjii=huidui/(height*wide*1.0f) 14将灰度图像进行转换(如下图所示)原图 处理后的图像void TuXianZhuanHuanDib:OnZhuanHuan() LPBYTE p_data;p_data = GetData();LONG wide= GetWidth();LONG height =GetHeight();15编程实现伪彩色图像的灰度处理。要求:修改颜色索引表,将伪彩色图像显示成灰度图像。将颜色表区间按如下公式进行灰度变换:Gray(i,j)=0.11R(i,j)+0.59G(i,j)+0.3B(i,j)CPalette * CDynSplitView2:CreateBitmapPalette(CDib * pBitmap)structWORD Version;WORD NumberOfEntries;PALETTEENTRY aEntries256; palette = 0x300, 256 ;LPRGBQUAD pRGBTable = pBitmap->GetRGB();UINT numberOfColors = pBitmap->GetNumberOfColors();for(UINT x=0; x<numberOfColors; +x)/请修改颜色表/ hPalette已在视类定义 hPalette.CreatePalette(LPLOGPALETTE)&palette); return &hPalette;16应用迭代阈值法计算阈值,二值化图像后提取目标物体的轮廓。要求:(1)获取原图像像素的首地址,及图像的高和宽;(2)开辟一块内存缓冲区,存储处理后的图像像素;(3)利用迭代阈值法,计算图像的阈值T(选择图像的平均灰度值做为初始阈值);(4)对图像进行二值化预处理,像素灰度值大于T的置白,否则置黑;(5)将像素点的4邻域像素读入数组中,如果4个邻域像素都和中心点相同,在内存缓区将该像素点置白,否则保持不变;(6)重复执行(3),对每一个像素进行处理;(7)将处理后的图像数据复制到原图像中。void BingXingBianJieDib:Lunkuotiqu() LPBYTE p_data, lpSrc; int wide,height; int i,j; int n1,n2,n3,n4; lpSrc=this->GetData(); p_data=lpSrc; wide=this->GetWidth ();height=this->GetHeight ();/迭代法计算图像的阈值T,再进行二值化预处理,像素灰度值大于T的置白,否则置黑。p_data=lpSrc; LPBYTE temp=new BYTEwide*height; memset( temp,255,sizeof( temp); for(j=1;j<height-1;j+) for(i=1;i<wide-1;i+)memcpy(lpSrc, temp,wide*height); delete temp; 17. 编写一幅 宽为width, 高为 height 的图像进行垂直上移的程序;并说明如何加快和减慢显示的速度? 答: for(int i=0;i<=bitmapHeight;i+)for(int j=0;j<=bitmapWidth; j=j+1):StretchDIBits(pDC->GetSafeHdc(), j , bitmapHeight-i , 1, i , j , bitmapHeight-i , 1, i , pBitmapData, pBitmapInfo, DIB_RGB_COLORS, SRCCOPY); Sleep(5);BOOL StretchDIBits(HDC hdc,int x,int y,int nWidth,int nHeight,int xSrc,int ySrc,int nSrcWidth,int nSrcHeight, CONST VOID*lpvBits,CONST BITMAPINFO *lpbmi, UNIT fuColorUse,DWORD dwrop); 参数说明: hdc:设备上下文句柄。 x: 指定绘制目标矩形左上角的逻辑X轴位置。y: 指定绘制目标矩形左上角的逻辑Y轴位置。nWidth: 指定绘制目标矩形的宽度(按逻辑单位)。nHeight: 指定绘制目标矩形的高度(按逻辑单位)。xSrc,ySrc: 指定源位图左上角的坐标(按逻辑单位)。加快显示的方法为,每次显示多行;减慢显示的方法有:加入sleep(.),每显示一行,睡眠几秒钟;或者每次显示一行中的一个或几个像素,而不是一次显示一行。18. 采用Robert算子对一幅 宽为wide, 高为 height 的灰度图像进行边缘检测的程序。原始图像的部分数据为:LPBYTE p_data; /原图数据区指针int wide,height; /原图长、宽p_data=this->GetData (); /取得原图的数据区指针 wide=this->GetWidth (); /取得原图的数据区宽度 height=this->GetHeight (); /取得原图的数据区高度答:int i,j; /循环变量 int pixel4; /Robert算子LPBYTE temp=new BYTEwide*height; /新图像缓冲区 memset(temp,255,wide*height); /设定新图像初值为255/由于使用2*2的模板,为防止越界,所以不处理最下边和最右边的两列像素for(j=0;j<height-1;j+)for(i=0;i<wide-1;i+) /生成Robert算子pixel0=p_dataj*wide+i;pixel1=p_dataj*wide+i+1;

    注意事项

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

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




    关于得利文库 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

    © 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

    黑龙江省互联网违法和不良信息举报
    举报电话:0468-3380021 邮箱:hgswwxb@163.com  

    收起
    展开