资源预览内容
第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
亲,该文档总共6页全部预览完了,如果喜欢就下载吧!
资源描述
数字图像处理技术 实验5 作者: 日期:2 实验报告课程名称:数字图像处理技术实验名称:实验六 图像分割技术、目标表达和描述实验日期:2012-05-16班级: 姓名: 学号: 仪器编号: 一、实验目的:1. 进一步能够掌握图像分割方法;2. 了解掌握轮廓和区域的表达几种方法;3. 了解掌握目标的层次表达和骨架表达。二、实验要求1. 利用区域生长或分裂合并法实现对图像的分割。2. 利用4叉树方法实现对目标的描述。3 把实现上面要求的程序发到jsj_chen163.com邮箱中。三、实验内容利用区域生长或分裂合并法实现对图像的分割(部分代码)。 #includestructSplitStruct unsignedintnWidth;/这一块图像的宽度 unsignedintnHeigh;/这一块图像的高度 unsignedintnOffSetWidth;/相对源图像数据的偏移宽度 unsignedintnOffSetHeigh;/相对源图像数据的偏移高度;voidAreaSplitCombineEx(BYTE* image0,/源图像数据unsignedintnAllWidth,/源图像的宽度unsignedintnAllHeigh,/源图像的高度unsignedintw,/这一块图像的宽度unsignedinth,/这一块图像的高度unsignedintnOffSetWidth,/相对源图像数据的偏移宽度unsignedintnOffSetHeigh)/相对源图像数据的偏移高度 std:stack nMyStack; SplitStruct splitStruct, splitStructTemp; splitStruct.nWidth= w; splitStruct.nHeigh= h; splitStruct.nOffSetWidth= nOffSetWidth; splitStruct.nOffSetHeigh= nOffSetHeigh; nMyStack.push(splitStruct); inti, j; intnValueS22;/用于存储块图像的属性值(该属性值=该块图像的所有像素灰度值之和除以该块图像所有像素点的数量) intnAV; intnWidthTemp3, nHeightTemp3, nTemp; intnWidth, nHeigh; intn, m, l; doubledOver; while(!nMyStack.empty() splitStruct = nMyStack.top();nMyStack.pop();n = (splitStruct.nOffSetHeigh * nAllWidth + splitStruct.nOffSetWidth);/该块图像的左上角/ 1.把图像分成2 * 2块,nWidthTemp0 = 0;nWidthTemp2 = (splitStruct.nWidth + 1) / 2;nWidthTemp1 = splitStruct.nWidth - nWidthTemp2;nHeightTemp0 = 0;nHeightTemp2 = (splitStruct.nHeigh + 1) / 2;nHeightTemp1 = splitStruct.nHeigh - nHeightTemp2;/计算每一块图像的属性值intnValue;intnValueTemp;nAV = 0;for(i = 1; i 3; +i)for(j = 1; j 3; +j)nValue = 0;m = (n + nAllWidth * nHeightTempi - 1 + nWidthTempj - 1);for(nHeigh = 0; nHeigh nHeightTempi; +nHeigh)for(nWidth = 0; nWidth nWidthTempj; +nWidth)l = (m + nAllWidth * nHeigh + nWidth) * 4;nValueTemp = (0.299 * image0l + 0.587 * image0l + 1 + 0.114 * image0l + 2);/灰度值之和nValue += nValueTemp;if(nHeightTempi * nWidthTempj = 0)continue;if(nHeightTempi * nWidthTempj = 1)l = m * 4;if(0.299 * image0l + 0.587 * image0l + 1 + 0.114 * image0l + 2) 125)/这个值可以动态设定image0l = image0l + 1 = image0l + 2 = 0;image0l + 3 = 255;elseimage0l = image0l + 1 = image0l + 2 = 255;image0l + 3 = 255;continue;/各块图像的灰度平均值(每一块图像的属性值)nValueSi - 1j - 1 = nValue / (nHeightTempi * nWidthTempj);/ 2.对每一块进行判断是否继续分裂(注意分裂的原则)/我这里的分裂原则是:图像的属性值在属性值平均值的误差范围之内就不分裂if(nValueSi - 1j - 1220)/灰度平均值少于200需要继续分裂/这里就是分裂准则了splitStructTemp.nWidth= nWidthTempj;splitStructTemp.nHeigh= nHeightTempi;splitStructTemp.nOffSetWidth= splitStruct.nOffSetWidth + nWidthTempj - 1;splitStructTemp.nOffSetHeigh= splitStruct.nOffSetHeigh + nHeightTempi - 1;nMyStack.push(splitStructTemp);else/合并(直接填充该块图像为黑色)
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号