00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00024
00025 #ifndef QVIPP_H
00026 #define QVIPP_H
00027
00028 #include <ipp.h>
00029
00030 #include <QMap>
00031 #include <QSize>
00032 #include <QPoint>
00033 #include <QVImage>
00034
00035 class QVMatrix;
00036 class QVVector;
00037
00038 #include <qvip/qvipp/qvippfunctions.h>
00039
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066 void Copy(const QVImage<uChar, 1> &src1, const QVImage<uChar, 1> &src2, const QVImage<uChar, 1> &src3, QVImage<uChar, 3> &dest, const QPoint &destROIOffset = QPoint(0,0));
00067
00071 void Copy(const QVImage<uShort, 1> &src1, const QVImage<uShort, 1> &src2, const QVImage<uShort, 1> &src3, QVImage<uShort, 3> &dest, const QPoint &destROIOffset = QPoint(0,0));
00072
00076 void Copy(const QVImage<sShort, 1> &src1, const QVImage<sShort, 1> &src2, const QVImage<sShort, 1> &src3, QVImage<sShort, 3> &dest, const QPoint &destROIOffset = QPoint(0,0));
00077
00081 void Copy(const QVImage<sInt, 1> &src1, const QVImage<sInt, 1> &src2, const QVImage<sInt, 1> &src3, QVImage<sInt, 3> &dest, const QPoint &destROIOffset = QPoint(0,0));
00082
00086 void Copy(const QVImage<sFloat, 1> &src1, const QVImage<sFloat, 1> &src2, const QVImage<sFloat, 1> &src3, QVImage<sFloat, 3> &dest, const QPoint &destROIOffset = QPoint(0,0));
00087
00089 void Copy(const QVImage<uChar, 3> &src, QVImage<uChar, 1> &dest1, QVImage<uChar, 1> &dest2, QVImage<uChar, 1> &dest3, const QPoint &destROIOffset = QPoint(0,0));
00090
00092 void Copy(const QVImage<sFloat, 3> &src, QVImage<sFloat, 1> &dest1, QVImage<sFloat, 1> &dest2, QVImage<sFloat, 1> &dest3, const QPoint &destROIOffset = QPoint(0,0));
00093
00102 void Copy(const QVImage<uChar, 3> &src, const uChar channel, QVImage<uChar, 1> &dest, const QPoint &destROIOffset = QPoint(0,0));
00103
00107 void Copy(const QVImage<uShort, 3> &src, const uChar channel, QVImage<uShort, 1> &dest, const QPoint &destROIOffset = QPoint(0,0));
00108
00112 void Copy(const QVImage<sShort, 3> &src, const uChar channel, QVImage<sShort, 1> &dest, const QPoint &destROIOffset = QPoint(0,0));
00113
00117 void Copy(const QVImage<sInt, 3> &src, const uChar channel, QVImage<sInt, 1> &dest, const QPoint &destROIOffset = QPoint(0,0));
00118
00122 void Copy(const QVImage<sFloat, 3> &src, const uChar channel, QVImage<sFloat, 1> &dest, const QPoint &destROIOffset = QPoint(0,0));
00123
00127 void Compare(const QVImage<uChar,3> &src1, const QVImage<uChar,3> &src2, QVImage<uChar> &dest, IppCmpOp ippCmpOp = ippCmpEq, const QPoint &destROIOffset = QPoint(0,0));
00128
00132 void Compare(const QVImage<uShort,3> &src1, const QVImage<uShort,3> &src2, QVImage<uChar> &dest, IppCmpOp ippCmpOp = ippCmpEq, const QPoint &destROIOffset = QPoint(0,0));
00133
00137 void Compare(const QVImage<sShort,3> &src1, const QVImage<sShort,3> &src2, QVImage<uChar> &dest, IppCmpOp ippCmpOp = ippCmpEq, const QPoint &destROIOffset = QPoint(0,0));
00138
00142 void Compare(const QVImage<sFloat,3> &src1, const QVImage<sFloat,3> &src2, QVImage<uChar> &dest, IppCmpOp ippCmpOp = ippCmpEq, const QPoint &destROIOffset = QPoint(0,0));
00143
00146 void YUV420ToRGB(const QVImage<uChar, 1> &srcY, const QVImage<uChar, 1> &srcU, const QVImage<uChar, 1> &srcV,
00147 QVImage<uChar, 3> &destRGB, const QPoint &destROIOffset = QPoint(0,0));
00148
00151 void RGBToYUV420(const QVImage<uChar, 3> &src, QVImage<uChar, 1> &dst1, QVImage<uChar, 1> &dst2, QVImage<uChar, 1> &dst3,
00152 const QPoint &destROIOffset = QPoint(0,0));
00153
00160 void Filter(const QVImage<sFloat> &src, QVImage<sFloat> &dest, const QVMatrix kernel, const QPoint &destROIOffset = QPoint(0,0));
00161
00162
00171 void FilterColumn(const QVImage<sFloat> &src, QVImage<sFloat> &dest, const QVVector kernel, const QPoint &destROIOffset = QPoint(0,0));
00172
00181 void FilterRow(const QVImage<sFloat> &src, QVImage<sFloat> &dest, const QVVector kernel, const QPoint &destROIOffset = QPoint(0,0));
00182
00195 void FilterSharpen(const QVImage<uChar> &src, QVImage<uChar> &dest, const QPoint &destROIOffset = QPoint(0,0));
00196
00200 void FilterSharpen(const QVImage<sFloat> &src, QVImage<sFloat> &dest, const QPoint &destROIOffset = QPoint(0,0));
00201
00216 void FilterSobelHorizBorder(const QVImage<uChar> &src, QVImage<sShort> &dest, const IppiMaskSize maskSize,
00217 const IppiBorderType borderType, const uChar borderValue, QVImage<uChar> &buffer, const QPoint &destROIOffset = QPoint(0,0));
00218
00233 void FilterSobelNegVertBorder(const QVImage<uChar> &src, QVImage<sShort> &dest, const IppiMaskSize maskSize,
00234 const IppiBorderType borderType, const uChar borderValue, QVImage<uChar> &buffer, const QPoint &destROIOffset = QPoint(0,0));
00235
00249 void Resize(const QVImage<uChar> &src, QVImage<uChar> &dest, int interpolation = IPPI_INTER_LINEAR);
00250
00254 void Resize(const QVImage<sFloat> &src, QVImage<sFloat> &dest, int interpolation = IPPI_INTER_LINEAR);
00255
00259 void Resize(const QVImage<uShort> &src, QVImage<uShort> &dest, int interpolation = IPPI_INTER_LINEAR);
00260
00261
00265 void Resize(const QVImage<uChar,3> &src, QVImage<uChar,3> &dest, int interpolation = IPPI_INTER_LINEAR);
00266
00276 void CannyGetSize(const QVGenericImage &src, QVImage<uChar> &buffer);
00277
00288 void FilterSobelHorizGetBufferSize(const QVGenericImage &src, const IppiMaskSize maskSize, QVImage<uChar> &buffer);
00289
00300 void FilterSobelNegVertGetBufferSize(const QVGenericImage &src, const IppiMaskSize maskSize, QVImage<uChar> &buffer);
00301
00313 void MinEigenValGetBufferSize( const QVGenericImage &src, QVImage<uChar> &buffer, uInt apertureSize = 5, uInt avgWindow = 5);
00314
00324 void FloodFillGetSize(const QVGenericImage &src, QVImage<uChar> &buffer);
00325
00349 void MinEigenVal(const QVImage<uChar> &src, QVImage<sFloat> &dest, QVImage<uChar> &buffer,
00350 uInt apertureSize = 3, uInt avgWindow = 5, IppiKernelType kernel = ippKernelSobel, const QPoint &destROIOffset = QPoint(0,0));
00351
00361 void FastMarchingGetBufferSize(const QVGenericImage &image, QVImage<uChar> &buffer);
00362
00364 void InpaintInitAllocC3(IppiInpaintState_8u_C3R **pState, const QVImage<sFloat> &distances, const QVImage<uChar> &mask,
00365 const sFloat radius, const IppiInpaintFlag flag);
00366
00368 void InpaintFreeC3(IppiInpaintState_8u_C3R *pState);
00369
00371 void InpaintInitAllocC1(IppiInpaintState_8u_C1R **pState, const QVImage<sFloat> &distances, const QVImage<uChar> &mask,
00372 const sFloat radius, const IppiInpaintFlag flag);
00373
00375 void InpaintFreeC1(IppiInpaintState_8u_C1R *pState);
00376
00389 QMap<sInt, int> HistogramRange(const QVImage<uChar, 1> &src, QList<uChar> values);
00390
00399 QVector<int> HistogramRange(const QVImage<uChar, 1> &src);
00400
00424 void FloodFillRange4Connected(QVImage<uChar> &img, QVImage<uChar> &buffer,
00425 uInt seedX, uInt seedY, uChar newVal, uChar minDelta, uChar maxDelta);
00426
00451 void FloodFillGradient4Connected(QVImage<uChar> &img, QVImage<uChar> &buffer,
00452 uInt seedX, uInt seedY, uChar newVal, uChar minDelta, uChar maxDelta);
00453
00479 void FilterGaussBorder(const QVImage<sFloat, 1> &src, QVImage<sFloat, 1> &dest, QVImage<uChar> &buffer, sInt kernelSize, sFloat sigma, IppiBorderType borderType = ippBorderConst, sFloat borderValue = 0.0, const QPoint &destROIOffset = QPoint(0,0));
00480
00492 void FilterGaussGetBufferSize(const QVGenericImage &image, QVImage<uChar> &buffer, uInt kernelSize);
00493
00514 void FindPeaks3x3(const QVImage<sInt, 1> &img, QVImage<uChar> &buffer, QList<QPoint> &points, sInt threshold, IppiNorm norm, uInt border, uInt maxPeakCount);
00515
00519 void FindPeaks3x3(const QVImage<sFloat, 1> &img, QVImage<uChar> &buffer, QList<QPoint> &points, sFloat threshold, IppiNorm norm, uInt border, uInt maxPeakCount);
00520
00521
00532 void FindPeaks3x3GetBufferSize(const QVImage<sInt,1> &image, QVImage<uChar> &buffer);
00533
00538 void FindPeaks3x3GetBufferSize(const QVImage<sFloat,1> &image, QVImage<uChar> &buffer);
00539
00552 void WarpPerspective(const QVImage<uChar> &src, QVImage<uChar> &dest, const QVMatrix &rectifyingHomography, int interpolation = IPPI_INTER_LINEAR, const QPoint &destROIOffset = QPoint(0,0));
00553
00557 void WarpPerspective(const QVImage<uChar,3> &src, QVImage<uChar,3> &dest, const QVMatrix &rectifyingHomography, int interpolation = IPPI_INTER_LINEAR, const QPoint &destROIOffset = QPoint(0,0));
00558
00559 #endif