📄 mask.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 + -