nmpp
iConvert.h
1//#ifndef __ICONVERT_H
2//#define __ICONVERT_H
3//
5//#include "nmtype.h"
6//#include "iDef.h"
7//
8//
9//#ifdef __cplusplus
10// extern "C" {
11//#endif
12//
14//
15// /**
16// \internal
17// \defgroup nmppiRShiftConvert nmppiRShiftConvert
18// \ingroup iInit
19// \brief
20// \ru Преобразование типов для элементов изображения.
21// \en Conversion of types for image elements.
22//
23// \~
24//
25// \f[
26// pDst(x,y) = Convert(pSrcImg(x,y) >> nShift)
27// \f]
28//
29// \f[ x = \overline{0 \ldots nWidth-1}, \quad
30// y = \overline{0 \ldots nHeight-1}
31// \f]
32//
33// \ru Функция преобразует тип элементов путем отсечения верхних разрядов.
34// \en The function converts a type of elements by means of most significant bits truncation.
35//
36// \~
37// \~
38// \param pSrcImg
39// \ru Указатель на первый элемент ROI для исходного изображения.
40// \en Pointer to the first ROI element for the source image.
41// \~
42// \param nSrcStride \ru Межстроковое смещение для исходного изображения
43// (измеряется в 32-х разрядных словах).
44// \en Row-to-row shift for the source image \n
45// (measured in 32-bit words).
46// \param pDstImg
47// \ru Указатель на первый элемент ROI для результирующего изображения.
48// \en Pointer to the first ROI element for the result image.
49// \~
50// \param nDstStride \ru Межстроковое смещение для результирующего изображения
51// (измеряется в 32-х разрядных словах).
52// \en Row-to-row shift for the result image \n
53// (measured in 32-bit words).
54// \param nShift
55// \ru Определяет число бит на которое предварительно сдвигается исходное
56// изображение.
57// \en Defines for how many bits the source image is preliminary shifted.
58// \~
59// \param nWidth
60// \ru Ширина ROI (измеряется в пикселях).
61// \en ROI width (measured in pixels).
62// \~
63// \param nHeight
64// \ru Высота ROI (измеряется в пикселях).
65// \en ROI height (measured in pixels).
66//
67// \~
68// \return \e void
69//
70// \restr
71// \ru
72// - Указатели на первый элемент ROI должны быть выровнены
73// в памяти на границу 64-х разрядного слова;
74// - Ширина ROI должна быть кратна числу пикселей результирующего изображения
75// в 64-х разрядном слове;
76// - Межстроковые смещения должны быть кратны двум.
77// - Значение параметра nShift должно быть кратно 2.
78// \en
79// - Pointers to the first ROI element should be aligned
80// in memory by the 64-bit word boundary;
81// - ROI width should be divisible by the number of pixels of the result image
82// in a 64-bit word;
83// - Row-to-row shifts should be divisible by two;
84// - nShift parameter value should be divisible by two.
85//
86// \par
87// \xmlonly
88// <testperf>
89// <param name="pSrcImg"> im0 im1 </param>
90// <param name="nSrcStride"> 128 </param>
91// <param name="nShift"> 2 </param>
92// <param name="pDstImg"> im0 im1 </param>
93// <param name="nDstStride"> 64 </param>
94// <param name="nHeight"> 128 </param>
95// <param name="nWidth"> 128 </param>
96// <size> nWidth*nHeight </size>
97// </testperf>
98// <testperf>
99// <param name="pSrcImg"> im0 </param>
100// <param name="nSrcStride"> 128 </param>
101// <param name="nShift"> 2 </param>
102// <param name="pDstImg"> im1 </param>
103// <param name="nDstStride"> 64 </param>
104// <param name="nHeight"> 128 </param>
105// <param name="nWidth"> 8 32 128 </param>
106// <size> nWidth*nHeight </size>
107// </testperf>
108// \endxmlonly
109// */
110// //! \{
111//void nmppiRShiftConvert(nm32s* pSrcImg, int nSrcStride, nm16s* pDstImg, int nDstStride, int nShift, int nWidth, int nHeight);
112// //! \}
113//
114//
128//
129// /**
130// \defgroup nmppiConvert nmppiConvert
131// \ingroup iInit
132// \brief
133// \ru Преобразование типов для элементов изображения.
134// \en Conversion of types for image elements.
135//
136// \~
137// \ru Функция конвертирует элементы RGB между 8-м разрядным представлением
138// и 10-ти разрядным.
139// \en Function converts RGB elements between 8-bits presentation and 10-bits.
140//
141// \~
142// \~
143// \param pSrcImg
144// \ru Указатель на первый элемент исходного изображения.
145// \en Pointer to the first element of the source image.
146// \~
147// \param pDstImg
148// \ru Указатель на первый элемент результирующего изображения.
149// \en Pointer to the first element of the result image.
150// \~
151// \param nSize
152// \ru Количество элементов в изображении.
153// \en Quantity of elements.
154//
155// \~
156// \return \e void
157//
158// \restr
159// \ru
160// - Указатели на изображения должны быть выровнены
161// в памяти на границу 64-х разрядного слова;
162// \en
163// - Pointers to the images should be aligned in memory
164// by the 64-bit word boundary;
165//
166// \par
167// \xmlonly
168// <testperf>
169// <param name="pSrcImg"> im0 im1 </param>
170// <param name="pDstImg"> im0 im1 </param>
171// <param name="nSize"> 128 </param>
172// <size> nSize </size>
173// </testperf>
174// <testperf>
175// <param name="pSrcImg"> im0 </param>
176// <param name="pDstImg"> im1 </param>
177// <param name="nSize"> 8 32 128 </param>
178// <size> nSize </size>
179// </testperf>
180// \endxmlonly
181// */
182// //! \{
183//void nmppiConvertRGB32_8u10u(RGB32_nm8u* pSrcImg, RGB32_nm10u* pDstImg, int nSize);
184//void nmppiConvertRGB32_10u8u(RGB32_nm10u* pSrcImg, RGB32_nm8u* pDstImg, int nSize);
185// //! \}
186//
187//
188//
205//
206// /**
207// \defgroup nmppiRGB32ToGray nmppiRGB32ToGray
208// \ingroup iInit
209// \brief
210// \ru Преобразование пикселей из RGB в яркость
211// \en
212//
213// \~
214// \param pRGB
215// \ru Вход, по 4 байта на пиксель. Порядок байтов B, G, R, 0.
216// \en
217// \param pDstGray
218// \ru Результат в виде 32 битных целых чисел, в которых
219// полезные данные занимают младшие 24 бита. Для получения
220// восьмибитовых пикселей неоходимо вырезать биты 16..23,
221// например, с помощью
222// nmppsClipRShiftConvert_Add_32s(nm32s* pSrcVec, int nClipFactor,int nShift, nm64u* nAddValue,nm8s* pDstVec, int nSize);
223// с параметрами nClipFactor=24, nShift=16.
224// \en
225// \param nSize
226// \ru Количество пикселей на входе и выходе. nSize=[64,128,192,...]
227// \en
228// \param pTmpBuf
229// \ru Временный массив размером nm32s[nSize] .
230// \en Temporary array with size of nm32s[nSize].
231//
232// \~
233// \par
234// \xmlonly
235// <testperf>
236// <param name="pRGB"> im0 im1 </param>
237// <param name="pDstGray"> im0 im1 </param>
238// <param name="pTmpBuf"> im0 im1 </param>
239// <param name="nSize"> 128 </param>
240// <size> nSize </size>
241// </testperf>
242// <testperf>
243// <param name="pRGB"> im0 </param>
244// <param name="pDstGray"> im1 </param>
245// <param name="pTmpBuf"> im2 </param>
246// <param name="nSize"> 8 32 128 </param>
247// <size> nSize </size>
248// </testperf>
249// \endxmlonly
250//
251// */
252// //! \{
253//void nmppiRGB32ToGray_8u32u(RGB32_nm8u* pRGB, nm32u* pDstGray, int nSize);
254//void nmppiRGB32ToGray_8u32s(RGB32_nm8u* pRGB, nm32s* pDstGray, int nSize);
255//void nmppiRGB32ToGray_8u8s(RGB32_nm8u* pRGB, nm8s* pDstGray, int nSize, void *pTmpBuf);
256//
257//void nmppiRGB32ToGray_10s32s(RGB32_nm10s* pRGB, nm32s* pDstGray, int nSize);
258//void nmppiRGB32ToGray_10s32u(RGB32_nm10s* pRGB, nm32u* pDstGray, int nSize);
259//void nmppiRGB32ToGray_10s8s(RGB32_nm10s* pRGB, nm8s* pDstGray, int nSize, void *pTmpBuf);
260// //! \}
261//
262//
263//
264//
265//
266//
267// /**
268// \internal
269// \defgroup nmppiGrayToRGB242424242424242424 nmppiGrayToRGB242424242424242424
270// \ingroup iInit
271// \brief
272// \ru преобразование из чернобелого формата в RGB24
273// \en Gray to RGB24 conversion
274// \~
275// \~
276// \param pSrcImg
277// \ru Входное изображение
278// \en Input image
279// \~
280// \param pDstImg
281// \ru Выходное изображение
282// \en Output image
283// \~
284// \param nSize
285// \ru Размер изображение в пикселях
286// \en Size of image in pixels
287// \~
288// */
289// //! \{
290//void nmppiGrayToRGB242424242424242424(nm8u* pSrcImg, RGB24_nm8u* pDstImg, int nSize);
291//void nmppiRGB24ToGray(RGB24_nm8u* pRGB, nm8u* pDstGray, int nSize);
292// //! \}
293// #ifdef __cplusplus
294// };
295// #endif
296//#endif
297//