nmpp
iFilter.h
1//------------------------------------------------------------------------
2//
3// $Workfile:: iFiltration.h $
4//
5// Векторно-матричная библиотека
6//
7// Copyright (c) RC Module Inc.
8//
9// $Revision: 1.1 $ $Date: 2005/02/10 12:36:38 $
10//
19//------------------------------------------------------------------------
20
21#ifndef _IFILTER_H_INCLUDED_
22#define _IFILTER_H_INCLUDED_
23
24#define NmppiFilterState nm64s
25#include "nmtype.h"
26
27#ifdef __cplusplus
28 extern "C" {
29#endif
30
31
33#ifdef __NM__
34 nm32s* pDispArray;
35 nm32s* pWeightMatrix;
36#else
37 nm32s* pDispArray;
38 nm32s* pWeightMatrix;
39 int nKerWidth;
40 int nKerHeight;
41#endif
42};
43
44
46#ifdef __NM__
47 nm32s* pDispArray;
48 nm32s* pWeightMatrix;
49 int nKerWidth;
50 int nKerHeight;
51#else
52 nm32s* pDispArray;
53 nm32s* pWeightMatrix;
54 int nKerWidth;
55 int nKerHeight;
56#endif
57};
58
59 //*****************************************************************************
114
115int nmppiSetFilter_8s8s (int* pWeights, int nKerWidth, int nKerHeight, int nImgWidth, nm64s* pKernel);
116int nmppiSetFilter_8s16s (int* pWeights, int nKerWidth, int nKerHeight, int nImgWidth, nm64s* pKernel);
117int nmppiSetFilter_8s32s (int* pWeights, int nKerWidth, int nKerHeight, int nImgWidth, nm64s* pKernel);
118int nmppiSetFilter_16s16s(int* pWeights, int nKerWidth, int nKerHeight, int nImgWidth, nm64s* pKernel);
119int nmppiSetFilter_16s32s(int* pWeights, int nKerWidth, int nKerHeight, int nImgWidth, nm64s* pKernel);
120int nmppiSetFilter_32s32s(int* pWeights, int nKerWidth, int nKerHeight, int nImgWidth, nm64s* pKernel);
122
123int nmppiGetFilterKernelSize32_8s8s(int nKerWidth, int nKerHeight);
124int nmppiGetFilterKernelSize32_8s16s(int nKerWidth, int nKerHeight);
125int nmppiGetFilterKernelSize32_8s32s(int nKerWidth, int nKerHeight);
126int nmppiGetFilterKernelSize32_16s16s(int nKerWidth, int nKerHeight);
127int nmppiGetFilterKernelSize32_16s32s(int nKerWidth, int nKerHeight);
128int nmppiGetFilterKernelSize32_32s32s(int nKerWidth, int nKerHeight);
129
130//*****************************************************************************
131
193void nmppiFilter_8s8s( nm8s * pSrcImg, nm8s* pDstImg, int nWidth, int nHeight, nm64s* pKernel);
194void nmppiFilter_8s16s( nm8s * pSrcImg, nm16s* pDstImg, int nWidth, int nHeight, nm64s* pKernel);
195void nmppiFilter_8s32s( nm8s * pSrcImg, nm32s* pDstImg, int nWidth, int nHeight, nm64s* pKernel);
196void nmppiFilter_16s16s( nm16s * pSrcImg, nm16s* pDstImg, int nWidth, int nHeight, nm64s* pKernel);
197void nmppiFilter_16s32s( nm16s * pSrcImg, nm32s* pDstImg, int nWidth, int nHeight, nm64s* pKernel);
198void nmppiFilter_32s32s( nm32s * pSrcImg, nm32s* pDstImg, int nWidth, int nHeight, nm64s* pKernel);
200
201
202
203//*****************************************************************************
204
286//void nmppiFilter_perf(int* pWeights, int nKerWidth, int nKerHeight, nm8s* pSrcImg, nm8s* pDstImg, int nImgWidth, int nImgHeight, nm64s* pKernel);
287//void nmppiFilter_perf(int* pWeights, int nKerWidth, int nKerHeight, nm8s* pSrcImg, nm16s* pDstImg, int nImgWidth, int nImgHeight, nm64s* pKernel);
288//void nmppiFilter_perf(int* pWeights, int nKerWidth, int nKerHeight, nm8s* pSrcImg, nm32s* pDstImg, int nImgWidth, int nImgHeight, nm64s* pKernel);
289//void nmppiFilter_perf(int* pWeights, int nKerWidth, int nKerHeight, nm16s* pSrcImg, nm16s* pDstImg, int nImgWidth, int nImgHeight, nm64s* pKernel);
290//void nmppiFilter_perf(int* pWeights, int nKerWidth, int nKerHeight, nm16s* pSrcImg, nm32s* pDstImg, int nImgWidth, int nImgHeight, nm64s* pKernel);
291//void nmppiFilter_perf(int* pWeights, int nKerWidth, int nKerHeight, nm32s* pSrcImg, nm32s* pDstImg, int nImgWidth, int nImgHeight, nm64s* pKernel);
293
294
295
296
297
304
310//template <class nmbits_in, class nmbits_out> class CnmppiFIR
311//{
312//public:
313// void (*pfFree32)(void*); ///< Указатель на функции освобождения памяти (pKernel)
314// int nKerWidth; ///< Ширина окна коэффицентов КИХ фильтра
315// int nKerHeight; ///< Высота окна коэффицентов КИХ фильтра
316// nm64s* pKernel; ///< Указатель на внутреннюю структуру коэффициентов
317// int nKernelSize; ///< Размер памяти необходимый для хранения внутренней структуру коэффициентов
318//
319// //! Конструктор КИХ фильтра
320// /*!
321// Выделяет область памяти под внутреннюю структуру коэффицентов
322// \param nKerWidth Ширина окна фильтра. nKerWidth=[3,5,7,...]
323// \param nKerHeight Высота окна фильтра. nKerHeight=[1,3,5,7,...]
324// \param malloc32_func указатель на функцию выделения динамической памяти 32-разрядными словами.
325// \param free32_func указатель на функцию динамического особождения памяти
326// */
327// CnmppiFIR(int nKerWidth, int nKerHeight, void* (*malloc32_func)(unsigned),void (*free32_func)(void*));
328//
329//
330// //! Загружает коэффиценты фильтра и инициализирует внутреннюю структуру хранениния коэффициентов в pKernel
331// /*!
332// \param pWeights коэффициенты фильтра
333// \param nImgWidth Ширина изображения к которому данный фильтр будет применен. Кратность согласно входному типу.
334// \return указатель на внутреннюю стуктуру коэффициентов. 0- Если память под структуру не была выделена.
335// */
336// void* SetWeights(int* pWeights, int nImgWidth);
337//
338// //! Функция одномерной фильтрации
339// /*!
340// \f[
341// pDstImg[y][x] = \sum\limits_{i = 0}^{nKerHeight-1} \sum\limits_{j = 0}^{nKerWidth-1} {pSrcImg[y+i-nKerHeight/2][x+j-nKerWidth/2] \cdot pWeights[i][j]} ,x=0 \ldots nImgWidth-1,y=0 \ldots nImgHeight-1
342// \f]
343//
344//
345// \param pSrcImg входное изображение
346// \param pDstImg выходное изображение
347// \param nImgWidth Ширина изображения к которому данный фильтр будет применен. Кратность согласно входному типу.
348// \param nImgHeight Высота изображения (измеряется в пикселях).
349//
350// \warning При вычислении первых и последних nKerHeight/2 сторк проивзодится выход за границы входного массива pSrcImg .
351// Для коректного поведения функции необходимо дополнительные резервировать поля размером не менее *nImgWidth*(nKernHeight/2+1) нулевых элементов перед началом и в конце массива pSrcImg.
352// */
353// void Filter(nmbits_in* pSrcImg, nmbits_out* pDstImg, int nImgWidth,int nImgHeight);
354//
355// //! Освобождает динамическую область памяти pKernel
356// ~CnmppiFIR();
357//
358//
359//};
360//
362
363
364#ifdef __cplusplus
365 };
366#endif
367
368
369#endif // _IFILTER_H_INCLUDED_
370
371
int nm32s
Definition: nmtype.h:292
long long nm64s
Definition: nmtype.h:375
short nm16s
Definition: nmtype.h:243
char nm8s
Definition: nmtype.h:167
Definition: iFilter.h:45
Definition: iFilter.h:32