资源描述:
《数字图像处理报告 vc++》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、原图:实验一、线性变化线性变化参数结果VisualC++实现BOOLCImgProcess::LinTran(CImgProcess*pTo,doubledFa,doubledFb)8{//首先检查图像是否是8位灰度图像if(m_pBMIH->biBitCount!=8)returnfalse;BYTEgray;//临时变量,存储当前光标像素的灰度值inttarget;//临时变量,存储当前光标像素的目标值for(inti=0;ibiHeight;i++){for(intj=0;jbiWidt
2、h;j++){gray=GetGray(j,i);target=dFa*gray+dFb;if(target<0)target=0;if(target>255)target=255;//写入目标图像pTo->SetPixel(j,i,RGB(target,target,target));}};returntrue;}实验二、分段线性变化参数结果8VisualC++实现BOOLCImgProcess::ParLinTran(CImgProcess*pTo,BYTEx1,BYTEx2,BYTEy1,BYTEy2){//首先检查图像的类型
3、if(m_pBMIH->biBitCount!=8)returnfalse;//检查参数范围if(x1>x2)returnfalse;//参数关系错误,返回错误BYTEgray;//临时变量,存储当前光标像素的灰度值inttarget;//临时变量,存储当前光标像素的目标值for(inti=0;ibiHeight;i++){for(intj=0;jbiWidth;j++){gray=GetGray(j,i);//按公式运算if(gray<=x1){target=y1*gray/x1;}else
4、if(gray<=x2){target=(y2-y1)*(gray-x1)/(x2-x1)+y1;}else{target=(255-y2)*(gray-x2)/(255-x2)+y2;};if(target<0)target=0;if(target>255)target=255;8//写入目标图像pTo->SetPixel(j,i,RGB(target,target,target));}}returntrue;}实验三、直方图均衡化结果VisualC++实现BOOLCImgProcess::Histeq(CImgProcess*p
5、To){//首先检查图像是否是8位灰度图像if(m_pBMIH->biBitCount!=8)returnfalse;BYTEgray;//临时变量,存储当前光标像素的灰度值inttarget;//临时变量,存储当前光标像素的目标值doublepdHist[256];//临时变量,存储灰度直方图doubledTemp;//临时变量,存储累加的直方图数据this->GenHist(pdHist);for(inti=0;ibiHeight;i++){for(intj=0;jbiWidth;j++)
6、{dTemp=0;gray=GetGray(j,i);for(BYTEk=0;k255)target=255;//写入目标图像pTo->SetPixel(j,i,RGB(target,target,target));}};returntrue;}实验四、中值滤波参数结果8VisualC++实现voidCImgProcess::MedianFilter(CImgProcess
7、*pTo,intnFilterH,intnFilterW,intnFilterMY,intnFilterMX){pTo->InitPixels(0);//初始化目标图像inti,j,k,l;intnHeight=GetHeight();intnWidth=GetWidthPixel();intnGray;int*pAryGray;//邻域像素数组pAryGray=newint[nFilterH*nFilterW];//逐行扫描图像,进行中值滤波for(i=nFilterMY;i8、1;i++)//行(除去边缘几行){for(j=nFilterMX;j