📄 rsi_convolve.c
字号:
/* Copyright 1997, Research Systems, Inc. All Rights Reserved */
void rsi_convolve(int iImageX, int iImageY, float fImage[],
int iFilterDimension, float fFilter[],
float fOutputImage[], int iCenterFlag)
{
float fSum;
int t, u, i, j;
float *pfFilterLine;
float *pfImageLine;
if (iCenterFlag == 0) {
for (t = iFilterDimension - 1; t < iImageX; t++) {
for (u = iFilterDimension - 1; u < iImageY; u++) {
fSum = (float) 0.;
for (i = 0; i < iFilterDimension; i++) {
pfFilterLine = &fFilter[i*iFilterDimension];
pfImageLine = &fImage[(t - i)*iImageX + u];
for (j = 0; j < iFilterDimension; j++)
fSum += *pfFilterLine++ * *pfImageLine--;
}
fOutputImage[t*iImageX + u] = fSum;
}
}
}
else
{
for (t = iFilterDimension - 1; t < iImageX - 1; t++) {
for (u = iFilterDimension - 1; u < iImageY - 1; u++) {
fSum = (float) 0.;
for (i = 0; i < iFilterDimension; i++) {
pfFilterLine = &fFilter[i*iFilterDimension];
pfImageLine = &fImage[(t + i - iFilterDimension/2)*iImageX +
u + iFilterDimension/2];
for (j = 0; j < iFilterDimension; j++)
fSum += *pfFilterLine++ * *pfImageLine--;
}
fOutputImage[t*iImageX + u] = fSum;
}
}
}
return;
}
/* Copyright 1998, Research Systems, Inc. All Rights Reserved */
#ifdef WIN32
#include <windows.h>
#define IDL_LONG_RETURN __declspec(dllexport) int
#else
#define IDL_LONG_RETURN int
#endif
void rsi_convolve(int iImageX, int iImageY, float fImage[],
int iFilterDimension, float fFilter[],
float fOutputImage[], int iCenterFlag);
IDL_LONG_RETURN RSI_Convolve_Ext(int argc, void *argv[])
{
int iImageX;
int iImageY;
float *pfImage;
int iFilterDimension;
float *pfFilter;
float *pfOutputImage;
int iCenterFlag;
iImageX = *(int *) argv[0];
iImageY = *(int *) argv[1];
pfImage = (float *) argv[2];
iFilterDimension = *(int *) argv[3];
pfFilter = (float *) argv[4];
pfOutputImage = (float *) argv[5];
iCenterFlag = *(int *) argv[6];
rsi_convolve(iImageX, iImageY, pfImage, iFilterDimension, pfFilter,
pfOutputImage, iCenterFlag);
return(1L);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -