⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mask.cpp

📁 it is in image processing field. this code Read TIFF Image then it excute compute histogram and hist
💻 CPP
字号:
// mask.cpp: implementation of the mask class.
//
//////////////////////////////////////////////////////////////////////

#include "mask.h"
#include<math.h>

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

mask::mask()
{

}

mask::~mask()
{

}

//////////////////////////////////////////////////////////////////////////
//the Laplacian Mask
//////////////////////////////////////////////////////////////////////////

void mask::Laplacian_Mask(float *InputImage, float *OutputImage, int NBL, int NBC)
{

	float Derivation_Sec,min=0,max=255;
	int pos=0, i, j, k, l,size = 3;
	int M[9] = {1,1,1,1,-8,1,1,1,1}; 

// apply the Laplacian Mask

	for(i=size/2; i<NBL-(size/2); i++)
		for(j=size/2; j<NBC-(size/2); j++)
		{
			Derivation_Sec = 0;
			pos = 0; 
			
			for(k=i-(size/2); k<=i+(size/2); k++)
				for(l=j-(size/2); l<=j+(size/2); l++)
				{
					Derivation_Sec += InputImage[l+k*NBC] * M[pos];
					pos++;
				}

			OutputImage[j+i*NBC] = InputImage[j+i*NBC] - Derivation_Sec;

		}

//linear transformation

	for (i=1; i<NBL*NBC; i++)
		{
			if (min > OutputImage[i]) 
				min = OutputImage[i];

			if (max < OutputImage[i]) 
				max = OutputImage[i];
		}	


	for (i=0; i<NBL*NBC; i++)
		OutputImage[i] = (OutputImage[i] - min) * 255/max;
	

}

/////////////////////////////////////////////////////////////////////////
//the Sobel Mask
//////////////////////////////////////////////////////////////////////////

void mask::Sobel_Mask(float *InputImage, float *OutputImage, int NBL, int NBC)
{

	int pos=0, i, j, k, l,size = 3;
	int Mx[9] = {-1,-2,-1,0,0,0,1,2,1}; 
	int My[9] = {-1,0,1,-2,0,2,-1,0,1}; 
	float Gx=0.0, Gy=0.0;


// apply the Sobel Mask

	for(i=size/2; i<NBL-(size/2); i++)
		for(j=size/2; j<NBC-(size/2); j++)
		{
			pos = 0;
			Gx= 0.0;
			Gy =0.0;
	 
			for(k=i-(size/2); k<=i+(size/2); k++)
				for(l=j-(size/2); l<=j+(size/2); l++)
				{
					Gx += InputImage[l+k*NBC] * Mx[pos];
					Gy += InputImage[l+k*NBC] * My[pos];
					pos++;
				}
			

			OutputImage[j+i*NBC] = abs(Gx) + abs(Gy);

		}


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -