2023年数字图像处理试题库

上传人:回**** 文档编号:166918258 上传时间:2022-11-01 格式:DOC 页数:44 大小:500KB
返回 下载 相关 举报
2023年数字图像处理试题库_第1页
第1页 / 共44页
2023年数字图像处理试题库_第2页
第2页 / 共44页
2023年数字图像处理试题库_第3页
第3页 / 共44页
点击查看更多>>
资源描述
试题库一、填空题: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;j2*height/3;j+) / 每行for(int i=0;iDibWidth;i+) / 每列int a=*p_data; /取得当前点的值*p_data=255-a; /取反p_data+; /指向下一指针 for(int j=2*height/3;jheight;j+) / 每行for(int i=0;i128)?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;jheight;j+) /对图像进行二值化预解决for( i=0;i128) *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;jheight-1;j+)for(i=1;iGetData();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);/ 33的结构元素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+)/ 由于使用33的结构元素,为防止越界,所以不解决最左、右、上、下四/边的像素/ 指向源图像倒数第j行,第i个象素的指针lpSrc = (unsigned char *)(p_data + wide * j + i);/ 指向目的图像倒数第j行,第i个象素的指针lpDst = (unsigned char *)(temp + wide * j + i);/ 目的图像中的当前点先赋成黑色*lpDst = 0;/ 假如源图像中33结构元素相应位置有白点/ 则将目的图像中的(0,0)点赋成白色for (m = 0; m 3; m+)for (n = 0; n 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;jbitmapHeight ; j+) for(int i=0;iGetSafeHdc(),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对灰度图像进行NN十字型中值滤波解决。规定:(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)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;jheight-n2;j+)for(int i=n2;iwide-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(madomGetRGB();UINT numberOfColors = pBitmap-GetNumberOfColors();for(UINT x=0; x0)&(x51) &(x101)&(x151)&(x201)&(x255) 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.中值滤波是指将当前像元的窗口(或领域)中所有像元灰度由小到大进行排序,中间值作为当前像元的输出值,试编程实现33中值滤波。原始图像的部分数据为:LPBYTE p_data;p_data = GetData();LONG wide= GetWidth();LONG height =GetHeight();答:int m;for(int j=1;jheight;j+) for(int i=1;iwide;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;m8;m+) if(madomGetHeight();/图像的高与宽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 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;j2*height/3;j+) / 每行for(int i=0;iDibWidth;i+) / 每列int a=*p_data; /取得当前点的值*p_data=255-a; /取反p_data+; /指向下一指针 for(int j=2*height/3;jheight;j+) / 每行for(int i=0;i128)?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 jheight; j+) for(int i=0;i iGetHeight ();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;iGetRGB();UINT numberOfColors = pBitmap-GetNumberOfColors();for(UINT x=0; xGetData(); 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;jheight-1;j+) for(i=1;iwide-1;i+) memcpy(lpSrc, temp,wide*height); delete temp; 17. 编写一幅 宽为width, 高为 height 的图像进行垂直上移的程序;并说明如何加快和减慢显示的速度? 答: for(int i=0;i=bitmapHeight;i+)for(int j=0;jGetSafeHdc(), 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;jheight-1;j+)for(i=0;iwide-1;i+) /生成Robert算子pixel0=p_dataj*wide+i;pixel1=p_dataj*wide+i+1;pixel2=p_data(j+1)*wide+i;pixel3=p_data(j+1)*wide+i+1;/解决当前像素 tempj*wide+i=(int)sqrt(pixel0-pixel3)*(pixel0-pixel3)+(pixel1-pixel2)*(pixel1-pixel2);/将缓冲区中的数据复制到原图数据区memcpy(p_data, temp,wide*height);/删除缓冲区delete temp; 二、简答题:1简述调用调色板的基本方法。2总结图像的特效显示方法。3在特效显示中,如何加快或减慢显示速度。4简述灰度变换的基本方法。5简述图像的二值化解决方法。6. 图像分辨率与显示分辨率有什么差别?在图像的数字化过程中,影响图像质量的因素有哪些,是怎么影响的?答:图像分辨率是数字化图像划分图像的像素密度,即单位长度内的像素数,其单位是每英寸的点数DPI。显示分辨率是把数字图像在输出设备(如显示屏或打印机等)上可以显示的像素数目和所显示像素之间的点距。影响图像质量的因素有两方面:采样分辨率和量化分辨率。采样分辨率越高,图像越清楚;量化分辨率越高,图像层次越丰富。7简述点运算与局部运算的差别。8令原图像的灰度范围为50,80,线性变换后图像的范围为20,180,写出与之间存在的变换公式。9简述灰度记录直方图在数字图像解决中的应用。10简述平滑解决的基本方法。11简述消除孤立黑像素点的基本方法。12分析比较基于空域的平滑解决与锐化解决在原理、解决方式及解决效果上的异同点。13对于如下图像,应用何种方法,可以检测出物体的边沿。写出检测公式。0 0 1 255 255 255 2551 1 1 254 253 254 2540 0 0 255 255 253 2531 1 0 254 254 254 25414写出双方向一次微分运算的数学表达式。15简述梯度锐化的目的,比较用纵向微分运算、横向微分运算、双方向一次微分运算作为梯度,哪一种效果更好。16最基本的一类边沿检测算子是微分算子类。涉及哪些?17简述Sobel边沿检测算子的实现方法。18. 灰度直方图的定义答:图像的直方图包含了丰富的图像信息,描述了图像的灰度级内容,反映了图像的灰度分布情况,从数学上会所,它记录一幅图像中各个灰度级出现的次数或概率;从图像上来说,它是一个二维图,横坐标表达图像中各个像素点的灰度级,纵坐标为各个灰度级上图像像素点出现的个数或出现概率。19图像分割的研究目的是什么?20在使用阈值法进行图像分割时,能否对的分割的关键是什么?21假设一幅图像只有物体和背景两部分组成,简述实现图像分割阈值的选择方法。22简述实现迭代阈值图像分割的方法。23图像的轮廓提取的目的是什么?试说明进行图像轮廓提取的解决环节。24试说明进行图像边界跟踪的解决环节。25试说明进行图像垂直投影量的解决环节。26简述纹理的记录特性、结构特性。27如何对纹理进行测度分析?28简述实现计算灰度共生矩阵的方法。29对下图通过先腐蚀,后膨胀解决,请画出解决之后的图0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 1 0 0 0 0 0 0 00 1 1 1 0 1 1 1 1 0 0 1 1 1 00 1 1 1 0 1 1 1 1 0 0 1 1 1 00 1 1 1 1 1 1 1 1 0 0 1 1 1 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0X B30对下图通过先膨胀,后腐蚀解决,请画出解决之后的图0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 1 0 0 0 0 0 0 00 1 1 1 0 1 1 1 1 0 0 1 1 1 00 1 1 1 0 1 1 1 1 0 0 1 1 1 00 1 1 1 1 1 1 1 1 0 0 1 1 1 00 0 0 0 0 0 0 0 0 0 0 0 0 0 031数学形态学的基本运算有哪些?32简述同一场景的多幅图像之间加运算的作用。33简述同一场景的多幅图像之间减运算的作用。34简述伪彩色图像与24位真彩色图像的区别解决。35采用邻域平均法实现彩色图像的平滑解决技术。36简述彩色图像的浮雕解决方法,并编程实现。37简述图像小波变换与傅立叶变换的区别38简述图像小波变换的作用 39简述JPEG压缩过程。40. 有一幅图象如下所示,由于干扰,在接受时图中有若干个亮点(灰度为255),试问此类图象如何解决?并将解决后的图象画出来。11187422552333332554333332554633452558234678答:进行中值滤波, 滤波之后的图像为11187422233333343333344633455823467841简述JPEG解压缩过程。42从RGB转换成YCbCr的色彩系统变换是否进行了压缩?43为什么正向离散余弦变换(FDCT)之后,需要进行量化?44简述JPEG压缩过程中量化器的设计原则。45简述Z字形编码的方式。46简述DC游程编码方式。47简述AC游程编码方式。48在JPEG压缩过程中如何实现Huffman编码?49在JPEG解压缩过程如何实现Huffman编码的解码?50彩色齿轮图像如图4-a所示,为了提取齿轮轮廓,如图4-b所示,该图像上背景为白色,齿轮边界为黑色。回答下列问题。 a. 彩色齿轮图像 b. 提取出的齿轮边界图像(1)简述为了实现二值化,拟定阈值的几种方法。答:a. 固定阈值法;b. 双固定阈值法;c. 通过直方图,选择阈值;d. 迭代方法选择阈值。(2)为了提取齿轮的内外轮廓,能用一个通用阈值实现二值化吗?简述理由。答:不能。从图像上看,齿轮内外边沿颜色亮度不同,并且它们所处的背景不同。因此,不能用一个通用阈值实现二值化。(3)简述提取齿轮轮廓的实现环节。答:实现环节如下:a. 二值化齿轮内外边沿颜色亮度不同,并且它们所处的背景不同。因此,不能用一个通用阈值实现二值化。分割出内齿轮,针对内外齿轮图分别用不同的阈值二值化。阈值的选择可以通过直方图选择阈值、通过实验选择固定阈值法、迭代方法选择阈值等方法b. 噪声滤波二值化后会有很多噪声,采用中值滤波、均值滤波、噪声消除法。c. 轮廓提取轮廓提取法、边界跟踪法、微分运算、边沿检测(Roberts边沿检测算子、Sobel边沿检测算子、Prewitt边沿检测算子、Krisch 边沿检测、高斯-拉普拉斯算子)。51如何由RGB颜色模型转换到HIS模型?答:依次过程大体为:灰度化,二值化,去噪,细化52全彩色图像文献数据与伪彩色图像文献数据有什么差别?答:全彩色图像:颜色数为1677万,图像深度为24位,每个像素颜色值的特点:位图文献中不包含颜色索引表,每个像素的像素值由R,G,B分量组成,三种颜色值得结合直接拟定了在图像上看到的颜色伪彩色图像:颜色数为256,图像深度8位,每个像素颜色值的特点:位图文献中包含颜色索引表,颜色索引表中彩色的RGB分量值不全相等,每个像素的像素值
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 成人自考


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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