`
yiheng
  • 浏览: 151819 次
社区版块
存档分类

图像锐化拉普拉斯vc代码

阅读更多



void CSDIELSView::OnSharpeningLaplace()
	{
//程序编制:李立宗  lilizong@gmail.com
//2012-8-11
		if(myImage1.IsNull())
			OnOpenResourceFile();
		if(!myImage2.IsNull())
			myImage2.Destroy();
		if(myImage2.IsNull()){
			myImage2.Create(myImage1.GetWidth(),myImage1.GetHeight(),24,0);
		}
		//COLORREF pixel; 
		int maxY = myImage1.GetHeight();
		int maxX=myImage1.GetWidth();
		byte* pRealData;
		byte* pRealData2;
		pRealData=(byte*)myImage1.GetBits();
		pRealData2=(byte*)myImage2.GetBits();
		int pit=myImage1.GetPitch();
		int pit2=myImage2.GetPitch();
		//需要注意,pit和pit2的值并不一样,所以如果使用一个值,会导致不同的结果出现
		//CString str;
		//str.Format(TEXT("%d"),pit);
		//MessageBox(str);
		//str.Format(TEXT("%d"),pit2);
		//MessageBox(str);
		int bitCount=myImage1.GetBPP()/8;
		int bitCount2=myImage2.GetBPP()/8;
		int tempR,tempG,tempB;
		int tempX,tempY;
		int temp;
		//int M[3][3]={{1,2,1},{2,4,2},{1,2,1}};
		int t=100; //门限
		//	tempR=tempG=tempG=0;
		//说明:将生产的图像作为24位图处理。
		for (int y=1; y<maxY-1; y++) {
			for (int x=1; x<maxX-1; x++) {
				temp=
					*(pRealData+pit*(y-1)+(x-1)*bitCount)+*(pRealData+pit*(y-1)+(x)*bitCount)+*(pRealData+pit*(y-1)+(x+1)*bitCount)
					+*(pRealData+pit*(y)+(x-1)*bitCount)-8*(*(pRealData+pit*(y)+(x)*bitCount))+*(pRealData+pit*(y)+(x+1)*bitCount)
					+*(pRealData+pit*(y+1)+(x-1)*bitCount)+*(pRealData+pit*(y+1)+(x)*bitCount)+*(pRealData+pit*(y+1)+(x+1)*bitCount);
				temp=abs(temp);
				if(temp>255)
					tempR=255;
				else
					tempR=temp;
				if(bitCount==1)
				{
					tempG=tempR;
					tempB=tempR;
				}
				else
				{
									temp=
					*(pRealData+pit*(y-1)+(x-1)*bitCount+1)+*(pRealData+pit*(y-1)+(x)*bitCount+1)+*(pRealData+pit*(y-1)+(x+1)*bitCount+1)
					+*(pRealData+pit*(y)+(x-1)*bitCount+1)-8*(*(pRealData+pit*(y)+(x)*bitCount+1))+*(pRealData+pit*(y)+(x+1)*bitCount+1)
					+*(pRealData+pit*(y+1)+(x-1)*bitCount+1)+*(pRealData+pit*(y+1)+(x)*bitCount+1)+*(pRealData+pit*(y+1)+(x+1)*bitCount+1);
				temp=abs(temp);
				if(temp>255)
					tempG=255;
				else
					tempG=temp;


								temp=
					*(pRealData+pit*(y-1)+(x-1)*bitCount+2)+*(pRealData+pit*(y-1)+(x)*bitCount+2)+*(pRealData+pit*(y-1)+(x+1)*bitCount+2)
					+*(pRealData+pit*(y)+(x-1)*bitCount+2)-8*(*(pRealData+pit*(y)+(x)*bitCount+2))+*(pRealData+pit*(y)+(x+1)*bitCount+2)
					+*(pRealData+pit*(y+1)+(x-1)*bitCount+2)+*(pRealData+pit*(y+1)+(x)*bitCount+2)+*(pRealData+pit*(y+1)+(x+1)*bitCount+2);
				temp=abs(temp);
				if(temp>255)
					tempB=255;
				else
					tempB=temp;
				}

				*(pRealData2+pit2*y+x*bitCount2)=tempR;
				*(pRealData2+pit2*y+x*bitCount2+1)=tempG;
				*(pRealData2+pit2*y+x*bitCount2+2)=tempB;
			}
		}
		Invalidate();
	}


分享到:
评论

相关推荐

    拉普拉斯锐化(边缘检测)_边缘锐化_Vc_

    Visual c++数字图像处理拉普拉斯锐化(边缘检测)算法源码

    几种图像处理的VC源代码

    这里包括几种比较好的图像处理的VC源代码,包括:维纳滤波,Hough变换,阈值变换,高斯平滑与拉普拉斯锐化.

    拉普拉斯锐化(边缘检测)_Vc_

    VC++中使用拉普拉斯边缘检测法对BMP位图进行锐化的实例包。VC++处理图像的时候会用到,锐化功能会使一幅图片的轮廓更清淅,看上去图片也就更清淅

    拉普拉斯锐化(边缘检测)_拉普拉斯_Vc_

    VC++图像处理源代码:拉普拉斯锐化(边缘检测),已经过作者调试,保证可以正常运行。

    Sharp.rar_Sharp_vc 锐化_锐化

    数字图像处理,对彩色图像的拉普拉斯算子锐化以及梯度算子锐化的比较,VC/MFC实现。

    图像处理基本算法 VC实现

    直方图 线性变换 窗口变换 图像反色 阈值变换 灰度拉伸 平滑滤波 中值滤波 梯度锐化 拉普拉斯锐化 边缘检测

    MFC图像处理 直方图 均衡 平滑 拉普拉斯

    VC6 MFC图像处理 直方图 均衡 平滑 拉普拉斯

    Visual c++数字图像处理典型算法及实例源代码

    源码目录结构图、256色转灰度图、Hough变换、Walsh变换、二值化变换、亮度增减、傅立叶变换、反色、取对数、取指数、图像平移、图像旋转、图像细化、图像缩放、图像镜像、均值滤波、对比度拉伸、拉普拉斯锐化(边缘...

    数字图像的一些基本操作用VC实现

    关于数字图像处理的一些基本代码,BMPViewer,hough变化,Sobel算子边缘检测算法,差影法.高斯平滑处理,灰度均衡,灰度拉伸,灰度阈值变换,拉普拉斯锐化,亮度增减

    VC图像处理源程序大全

    拉普拉斯锐化(边缘检测).rar 方块编码.rar 梯度锐化.rar 灰度均衡.rar 用Canny算子提取边缘.rar 直方图均衡.rar 离散余弦变换.rar 维纳滤波处理.rar 逆滤波处理.rar 阈值变换.rar 高斯平滑.rar

    VC++拉普拉斯图像边缘检测锐化实例包

    内容索引:VC/C++源码,图形处理,拉普拉斯,边缘检测,图像锐化 VC++中使用拉普拉斯边缘检测法对BMP位图进行锐化的实例包。VC++处理图像的时候会用到,锐化功能会使一幅图片的轮廓更清淅,看上去图片也就更清淅,但有...

    图像的增强处理 VC opencv

    图像的增强处理:运用到opencv知识,包括图像平滑,中值滤波,拉普拉斯锐化

    VIsual C++数字图像处理典型算法及实现

    数字图像处理算法实现的源程序,编译环境VC6.0.包括图像点运算,几何变换,滤波,傅立叶变换等

    VC图像处理软件

    包括Wash变换,将256色图像转为灰度图,高斯平滑,对比度拉伸,二值化,反色,方块编码,Fourier变换,均值滤波,拉普拉斯锐化,DCT变换,亮度增减,梯度锐化,图像镜像,图像平移,图像缩放,图像细化,图像旋转,...

    VC++数字图像处理程序

    使用VC++ 6.0完成的一个具有MFC界面的简单数字图像处理程序。...图像增强:图像平滑、梯度锐化、拉普拉斯锐化。形态学变换:腐蚀、膨胀、开运算、闭运算。边缘与轮廓:边缘检测、轮廓提取、轮廓跟踪。

    Visual c 数字图像处理典型算法及实例随书光盘源码.rar

    Visual c 数字图像处理典型算法及实例随书光盘源码,列举一些源码:用Canny算子提取边缘、梯度锐化、取对数、256色转灰度图、Hough变换、对比度拉伸、Walsh变换、二值化变换、维纳滤波处理、阈值变换、直方图均衡、...

    数字图像增强技术及其在VC + + 6. 0 下的实现

    论述了数字图像增强技术中涉及到的图像平滑、中值滤波、梯度锐化和拉普拉斯锐化等基本算法及其在 Visual C + + 6. 0 下的具体实现,同时,还分别给出一幅标准的数字图像在各种处理前与处理后的对照图像。

    whu_7-115-14828-7_2006_1.rar_vc hough_walsh滤波

    30个图像处理的VC++ 源代码,包括256色转灰度图,Hough变换,image_j1,PCA,Walsh变换,对比度拉伸,二值化变换,反色, 方块编码,傅立叶变换,高斯平滑,灰度均衡,均值滤波,拉普拉斯锐化(边缘检测), 离散余弦变换,亮度增减...

    VC实现的基本图像处理

    注意,本目录中大部分程序只能对256色图像进行操作。 对比度拉伸 二值化 变换反色 亮度增减 取对数取指数 直方图均衡 阈值变换 图像镜像 图像平移 ...拉普拉斯锐化(边缘检测) 离散余弦变换 Walsh变换 维纳滤波处理

    Image_Laplace_sharpening.rar_图形图像处理_Visual_C++_

    图像的拉普拉斯锐化的VC源代码,可用于对图像进行边缘检测,希望对图形图像学习者有所帮助。

Global site tag (gtag.js) - Google Analytics