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 #include <QVIndexedStringList>
00035
00036 class QVMatrix;
00037 class QVVector;
00038
00039 #include <qvipp/qvippfunctions.h>
00040
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067 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));
00068
00072 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));
00073
00077 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));
00078
00082 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));
00083
00087 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));
00088
00091 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));
00092
00095 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));
00096
00105 void Copy(const QVImage<uChar, 3> &src, const uChar channel, QVImage<uChar, 1> &dest, const QPoint &destROIOffset = QPoint(0,0));
00106
00110 void Copy(const QVImage<uShort, 3> &src, const uChar channel, QVImage<uShort, 1> &dest, const QPoint &destROIOffset = QPoint(0,0));
00111
00115 void Copy(const QVImage<sShort, 3> &src, const uChar channel, QVImage<sShort, 1> &dest, const QPoint &destROIOffset = QPoint(0,0));
00116
00120 void Copy(const QVImage<sInt, 3> &src, const uChar channel, QVImage<sInt, 1> &dest, const QPoint &destROIOffset = QPoint(0,0));
00121
00125 void Copy(const QVImage<sFloat, 3> &src, const uChar channel, QVImage<sFloat, 1> &dest, const QPoint &destROIOffset = QPoint(0,0));
00126
00130 void Compare(const QVImage<uChar,3> &src1, const QVImage<uChar,3> &src2, QVImage<uChar> &dest, IppCmpOp ippCmpOp = ippCmpEq, const QPoint &destROIOffset = QPoint(0,0));
00131
00135 void Compare(const QVImage<uShort,3> &src1, const QVImage<uShort,3> &src2, QVImage<uChar> &dest, IppCmpOp ippCmpOp = ippCmpEq, const QPoint &destROIOffset = QPoint(0,0));
00136
00140 void Compare(const QVImage<sShort,3> &src1, const QVImage<sShort,3> &src2, QVImage<uChar> &dest, IppCmpOp ippCmpOp = ippCmpEq, const QPoint &destROIOffset = QPoint(0,0));
00141
00145 void Compare(const QVImage<sFloat,3> &src1, const QVImage<sFloat,3> &src2, QVImage<uChar> &dest, IppCmpOp ippCmpOp = ippCmpEq, const QPoint &destROIOffset = QPoint(0,0));
00146
00149 void YUV420ToRGB(const QVImage<uChar, 1> &srcY, const QVImage<uChar, 1> &srcU, const QVImage<uChar, 1> &srcV,
00150 QVImage<uChar, 3> &destRGB, const QPoint &destROIOffset = QPoint(0,0));
00151
00154 void RGBToYUV420(const QVImage<uChar, 3> &src, QVImage<uChar, 1> &dst1, QVImage<uChar, 1> &dst2, QVImage<uChar, 1> &dst3,
00155 const QPoint &destROIOffset = QPoint(0,0));
00156
00163 void Filter(const QVImage<sFloat> &src, QVImage<sFloat> &dest, const QVMatrix kernel, const QPoint &destROIOffset = QPoint(0,0));
00164
00165
00174 void FilterColumn(const QVImage<sFloat> &src, QVImage<sFloat> &dest, const QVVector kernel, const QPoint &destROIOffset = QPoint(0,0));
00175
00184 void FilterRow(const QVImage<sFloat> &src, QVImage<sFloat> &dest, const QVVector kernel, const QPoint &destROIOffset = QPoint(0,0));
00185
00198 void FilterSharpen(const QVImage<uChar> &src, QVImage<uChar> &dest, const QPoint &destROIOffset = QPoint(0,0));
00199
00203 void FilterSharpen(const QVImage<sFloat> &src, QVImage<sFloat> &dest, const QPoint &destROIOffset = QPoint(0,0));
00204
00210 void Erode3x3(const QVImage<uChar> &src, QVImage<uChar> &dest, const QPoint &destROIOffset = QPoint(0,0));
00211
00217 void Erode3x3(const QVImage<uShort> &src, QVImage<uShort> &dest, const QPoint &destROIOffset = QPoint(0,0));
00218
00224 void Erode3x3(const QVImage<sFloat> &src, QVImage<sFloat> &dest, const QPoint &destROIOffset = QPoint(0,0));
00225
00231 void Erode3x3(const QVImage<uChar,3> &src, QVImage<uChar,3> &dest, const QPoint &destROIOffset = QPoint(0,0));
00232
00238 void Erode3x3(const QVImage<uShort,3> &src, QVImage<uShort,3> &dest, const QPoint &destROIOffset = QPoint(0,0));
00239
00245 void Erode3x3(const QVImage<sFloat,3> &src, QVImage<sFloat,3> &dest, const QPoint &destROIOffset = QPoint(0,0));
00246
00252 void Dilate3x3(const QVImage<uChar> &src, QVImage<uChar> &dest, const QPoint &destROIOffset = QPoint(0,0));
00253
00259 void Dilate3x3(const QVImage<uShort> &src, QVImage<uShort> &dest, const QPoint &destROIOffset = QPoint(0,0));
00260
00266 void Dilate3x3(const QVImage<sFloat> &src, QVImage<sFloat> &dest, const QPoint &destROIOffset = QPoint(0,0));
00267
00273 void Dilate3x3(const QVImage<uChar,3> &src, QVImage<uChar,3> &dest, const QPoint &destROIOffset = QPoint(0,0));
00274
00280 void Dilate3x3(const QVImage<uShort,3> &src, QVImage<uShort,3> &dest, const QPoint &destROIOffset = QPoint(0,0));
00281
00287 void Dilate3x3(const QVImage<sFloat,3> &src, QVImage<sFloat,3> &dest, const QPoint &destROIOffset = QPoint(0,0));
00288
00294 void FilterSobelHoriz(const QVImage<uChar> &src, QVImage<uChar> &dest, const QPoint &destROIOffset = QPoint(0,0));
00295
00301 void FilterSobelHoriz(const QVImage<sShort> &src, QVImage<sShort> &dest, const QPoint &destROIOffset = QPoint(0,0));
00302
00308 void FilterSobelHoriz(const QVImage<sFloat> &src, QVImage<sFloat> &dest, const QPoint &destROIOffset = QPoint(0,0));
00309
00315 void FilterSobelHoriz(const QVImage<uChar,3> &src, QVImage<uChar,3> &dest, const QPoint &destROIOffset = QPoint(0,0));
00316
00322 void FilterSobelHoriz(const QVImage<sShort,3> &src, QVImage<sShort,3> &dest, const QPoint &destROIOffset = QPoint(0,0));
00323
00329 void FilterSobelHoriz(const QVImage<sFloat,3> &src, QVImage<sFloat,3> &dest, const QPoint &destROIOffset = QPoint(0,0));
00330
00336 void FilterSobelVert(const QVImage<uChar> &src, QVImage<uChar> &dest, const QPoint &destROIOffset = QPoint(0,0));
00337
00343 void FilterSobelVert(const QVImage<sShort> &src, QVImage<sShort> &dest, const QPoint &destROIOffset = QPoint(0,0));
00344
00350 void FilterSobelVert(const QVImage<sFloat> &src, QVImage<sFloat> &dest, const QPoint &destROIOffset = QPoint(0,0));
00351
00357 void FilterSobelVert(const QVImage<uChar,3> &src, QVImage<uChar,3> &dest, const QPoint &destROIOffset = QPoint(0,0));
00358
00364 void FilterSobelVert(const QVImage<sShort,3> &src, QVImage<sShort,3> &dest, const QPoint &destROIOffset = QPoint(0,0));
00365
00371 void FilterSobelVert(const QVImage<sFloat,3> &src, QVImage<sFloat,3> &dest, const QPoint &destROIOffset = QPoint(0,0));
00372
00387 void FilterSobelHorizBorder(const QVImage<uChar> &src, QVImage<sShort> &dest, const IppiMaskSize maskSize,
00388 const IppiBorderType borderType, const uChar borderValue, QVImage<uChar> &buffer, const QPoint &destROIOffset = QPoint(0,0));
00389
00404 void FilterSobelNegVertBorder(const QVImage<uChar> &src, QVImage<sShort> &dest, const IppiMaskSize maskSize,
00405 const IppiBorderType borderType, const uChar borderValue, QVImage<uChar> &buffer, const QPoint &destROIOffset = QPoint(0,0));
00406
00420 void Resize(const QVImage<uChar> &src, QVImage<uChar> &dest, int interpolation = IPPI_INTER_LINEAR);
00421
00425 void Resize(const QVImage<sFloat> &src, QVImage<sFloat> &dest, int interpolation = IPPI_INTER_LINEAR);
00426
00430 void Resize(const QVImage<uShort> &src, QVImage<uShort> &dest, int interpolation = IPPI_INTER_LINEAR);
00431
00432
00436 void Resize(const QVImage<uChar,3> &src, QVImage<uChar,3> &dest, int interpolation = IPPI_INTER_LINEAR);
00437
00447 void CannyGetSize(const QVGenericImage &src, QVImage<uChar> &buffer);
00448
00459 void FilterSobelHorizGetBufferSize(const QVGenericImage &src, const IppiMaskSize maskSize, QVImage<uChar> &buffer);
00460
00471 void FilterSobelNegVertGetBufferSize(const QVGenericImage &src, const IppiMaskSize maskSize, QVImage<uChar> &buffer);
00472
00484 void MinEigenValGetBufferSize( const QVGenericImage &src, QVImage<uChar> &buffer, uInt apertureSize = 5, uInt avgWindow = 5);
00485
00495 void FloodFillGetSize(const QVGenericImage &src, QVImage<uChar> &buffer);
00496
00520 void MinEigenVal(const QVImage<uChar> &src, QVImage<sFloat> &dest, QVImage<uChar> &buffer,
00521 uInt apertureSize = 3, uInt avgWindow = 5, IppiKernelType kernel = ippKernelSobel, const QPoint &destROIOffset = QPoint(0,0));
00522
00532 void FastMarchingGetBufferSize(const QVGenericImage &image, QVImage<uChar> &buffer);
00533
00536 void InpaintInitAllocC3(IppiInpaintState_8u_C3R **pState, const QVImage<sFloat> &distances, const QVImage<uChar> &mask,
00537 const sFloat radius, const IppiInpaintFlag flag);
00538
00541 void InpaintFreeC3(IppiInpaintState_8u_C3R *pState);
00542
00545 void InpaintInitAllocC1(IppiInpaintState_8u_C1R **pState, const QVImage<sFloat> &distances, const QVImage<uChar> &mask,
00546 const sFloat radius, const IppiInpaintFlag flag);
00547
00550 void InpaintFreeC1(IppiInpaintState_8u_C1R *pState);
00551
00564 QMap<sInt, int> HistogramRange(const QVImage<uChar, 1> &src, QList<uChar> values);
00565
00574 QVector<int> HistogramRange(const QVImage<uChar, 1> &src);
00575
00599 void FloodFillRange4Connected(QVImage<uChar> &img, QVImage<uChar> &buffer,
00600 uInt seedX, uInt seedY, uChar newVal, uChar minDelta, uChar maxDelta);
00601
00626 void FloodFillGradient4Connected(QVImage<uChar> &img, QVImage<uChar> &buffer,
00627 uInt seedX, uInt seedY, uChar newVal, uChar minDelta, uChar maxDelta);
00628
00654 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));
00655
00667 void FilterGaussGetBufferSize(const QVGenericImage &image, QVImage<uChar> &buffer, uInt kernelSize);
00668
00689 void FindPeaks3x3(const QVImage<sInt, 1> &img, QVImage<uChar> &buffer, QList<QPoint> &points, sInt threshold, IppiNorm norm, uInt border, uInt maxPeakCount);
00690
00694 void FindPeaks3x3(const QVImage<sFloat, 1> &img, QVImage<uChar> &buffer, QList<QPoint> &points, sFloat threshold, IppiNorm norm, uInt border, uInt maxPeakCount);
00695
00696
00707 void FindPeaks3x3GetBufferSize(const QVImage<sInt,1> &image, QVImage<uChar> &buffer);
00708
00713 void FindPeaks3x3GetBufferSize(const QVImage<sFloat,1> &image, QVImage<uChar> &buffer);
00714
00727 void WarpPerspective(const QVImage<uChar> &src, QVImage<uChar> &dest, const QVMatrix &rectifyingHomography, int interpolation = IPPI_INTER_LINEAR, const QPoint &destROIOffset = QPoint(0,0));
00728
00732 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));
00733
00734 #endif