src/qvipp/qvipp.h

Go to the documentation of this file.
00001 /*
00002  *      Copyright (C) 2007. PARP Research Group.
00003  *      <http://perception.inf.um.es>
00004  *      University of Murcia, Spain.
00005  *
00006  *      This file is part of the QVision library.
00007  *
00008  *      QVision is free software: you can redistribute it and/or modify
00009  *      it under the terms of the GNU Lesser General Public License as
00010  *      published by the Free Software Foundation, version 3 of the License.
00011  *
00012  *      QVision is distributed in the hope that it will be useful,
00013  *      but WITHOUT ANY WARRANTY; without even the implied warranty of
00014  *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015  *      GNU Lesser General Public License for more details.
00016  *
00017  *      You should have received a copy of the GNU Lesser General Public
00018  *      License along with QVision. If not, see <http://www.gnu.org/licenses/>.
00019  */
00020 
00024 
00025 #ifndef QVIPP_H
00026 #define QVIPP_H
00027 
00028 #include <qvcore/qvimage.h>
00029 #include <QMap>
00030 
00031 namespace qvipp
00032 {
00039 void Copy(const QVImage<uChar, 1> &src, QVImage<uChar, 1> &dest);
00040 
00043 void Copy(const QVImage<sShort, 1> &src, QVImage<sShort, 1> &dest);
00044 
00047 void Copy(const QVImage<sFloat, 1> &src, QVImage<sFloat, 1> &dest);
00048 
00051 void Copy(const QVImage<uChar, 3> &src, QVImage<uChar, 3> &dest);
00052 
00055 void Copy(const QVImage<sShort, 3> &src, QVImage<sShort, 3> &dest);
00056 
00059 void Copy(const QVImage<sFloat, 3> &src, QVImage<sFloat, 3> &dest);
00060 
00068 void Copy(const QVImage<uChar, 1> &src, QVImage<uChar, 3> &dest);
00069 
00072 void Copy(const QVImage<sShort, 1> &src, QVImage<sShort, 3> &dest);
00073 
00076 void Copy(const QVImage<sFloat, 1> &src, QVImage<sFloat, 3> &dest);
00077 
00094 void Compare(const QVImage<uChar> &src1, const QVImage<uChar> &src2, QVImage<uChar> &dest, IppCmpOp ippCmpOp = ippCmpEq);
00095 
00098 void Compare(const QVImage<sShort> &src1, const QVImage<sShort> &src2, QVImage<uChar> &dest, IppCmpOp ippCmpOp = ippCmpEq);
00099 
00102 void Compare(const QVImage<sFloat> &src1, const QVImage<sFloat> &src2, QVImage<uChar> &dest, IppCmpOp ippCmpOp = ippCmpEq);
00103 
00106 void Compare(const QVImage<uChar,3> &src1, const QVImage<uChar,3> &src2, QVImage<uChar> &dest, IppCmpOp ippCmpOp = ippCmpEq);
00107 
00110 void Compare(const QVImage<sShort,3> &src1, const QVImage<sShort,3> &src2, QVImage<uChar> &dest, IppCmpOp ippCmpOp = ippCmpEq);
00111 
00114 void Compare(const QVImage<sFloat,3> &src1, const QVImage<sFloat,3> &src2, QVImage<uChar> &dest, IppCmpOp ippCmpOp = ippCmpEq);
00115 
00134 void CompareC(const QVImage<uChar> &src, QVImage<uChar> &dest, uChar constant, IppCmpOp ippCmpOp = ippCmpEq);
00135 
00138 void CompareC(const QVImage<sFloat> &src, QVImage<uChar> &dest, sFloat constant, IppCmpOp ippCmpOp = ippCmpEq);
00139 
00147 void Convert(const QVImage<uChar, 1> &src, QVImage<sShort, 1> &dest);
00148 
00151 void Convert(const QVImage<uChar, 1> &src, QVImage<sFloat, 1> &dest);
00152 
00155 void Convert(const QVImage<sShort, 1> &src, QVImage<uChar, 1> &dest);
00156 
00159 void Convert(const QVImage<sShort, 1> &src, QVImage<sFloat, 1> &dest);
00160 
00163 void Convert(const QVImage<uChar, 3> &src, QVImage<sShort, 3> &dest);
00164 
00167 void Convert(const QVImage<uChar, 3> &src, QVImage<sFloat, 3> &dest);
00168 
00171 void Convert(const QVImage<sShort, 3> &src, QVImage<uChar, 3> &dest);
00172 
00175 void Convert(const QVImage<sShort, 3> &src, QVImage<sFloat, 3> &dest);
00176 
00189 void Convert(const QVImage<sFloat, 1> &src, QVImage<uChar, 1> &dest, IppRoundMode roundMode = ippRndNear);
00190 
00193 void Convert(const QVImage<sFloat, 1> &src, QVImage<sShort, 1> &dest, IppRoundMode roundMode = ippRndNear);
00194 
00197 void Convert(const QVImage<sFloat, 3> &src, QVImage<uChar, 3> &dest, IppRoundMode roundMode = ippRndNear);
00198 
00201 void Convert(const QVImage<sFloat, 3> &src, QVImage<sShort, 3> &dest, IppRoundMode roundMode = ippRndNear);
00202 
00213 void RGBToGray(const QVImage<uChar, 3> &src, QVImage<uChar, 1> &dest);
00214 
00217 void RGBToGray(const QVImage<sShort, 3> &src, QVImage<sShort, 1> &dest);
00218 
00221 void RGBToGray(const QVImage<sFloat, 3> &src, QVImage<sFloat, 1> &dest);
00222 
00240 void Threshold(const QVImage<uChar> &src, QVImage<uChar> &dest, uChar constant, IppCmpOp ippCmpOp = ippCmpEq);
00241 
00244 void Threshold(const QVImage<sShort> &src, QVImage<sShort> &dest, sShort constant, IppCmpOp ippCmpOp = ippCmpEq);
00245 
00248 void Threshold(const QVImage<sFloat> &src, QVImage<sFloat> &dest, sFloat constant, IppCmpOp ippCmpOp = ippCmpEq);
00249 
00256 void Set(QVImage<uChar> &img, uChar constant);
00257 
00260 void Set(QVImage<sShort> &img, sShort constant);
00261 
00264 void Set(QVImage<sFloat> &img, sFloat constant);
00265 
00275 void Set(QVImage<uChar, 3> &img, uChar red, uChar green, uChar blue);
00276 
00279 void Set(QVImage<sShort, 3> &img, sShort red, sShort green, sShort blue);
00280 
00283 void Set(QVImage<sFloat, 3> &img, sFloat red, sFloat green, sFloat blue);
00284 
00289 void Abs(const QVImage<sShort> &src, QVImage<sShort> &dest);
00290 
00293 void Abs(const QVImage<sFloat> &src, QVImage<sFloat> &dest);
00294 
00295 // boolean
00300 void Not(const QVImage<uChar> &src, QVImage<uChar> &dest);
00301 
00304 void Not(const QVImage<uChar,3> &src, QVImage<uChar,3> &dest);
00305 
00311 void OrC(const QVImage<uChar> &src, QVImage<uChar> &dest, uChar constant);
00312 
00318 void AndC(const QVImage<uChar> &src, QVImage<uChar> &dest, uChar constant);
00319 
00325 void XorC(const QVImage<uChar> &src, QVImage<uChar> &dest, uChar constant);
00326 
00332 void LShiftC(const QVImage<uChar> &src, QVImage<uChar> &dest, uChar constant);
00333 
00334 /*/// @brief Shifts bits in pixel values to the left.
00336 void LShiftC(const QVImage<uShort> &src, QVImage<uShort> &dest, uChar constant);*/
00337 
00343 void RShiftC(const QVImage<uChar> &src, QVImage<uChar> &dest, uChar constant);
00344 
00345 /*/// @brief Computes the exponential of pixel values in a image.
00350 void ExpC(const QVImage<sShort> &src, QVImage<sShort> &dest, uChar constant);*/
00351 
00352 
00353 /*/// @brief Shifts bits in pixel values to the left.
00355 void RShiftC(const QVImage<uShort> &src, QVImage<uShort> &dest, uChar constant);*/
00356 
00357 // aritmetic
00372 void Add(const QVImage<uChar> &src1, const QVImage<uChar> &src2, QVImage<uChar> &dest, int scale = 1);
00373 
00376 void Add(const QVImage<uChar,3> &src1, const QVImage<uChar,3> &src2, QVImage<uChar,3> &dest, int scale = 1);
00377 
00380 void Add(const QVImage<sShort> &src1, const QVImage<sShort> &src2, QVImage<sShort> &dest, int scale = 1);
00381 
00384 void Add(const QVImage<sShort,3> &src1, const QVImage<sShort,3> &src2, QVImage<sShort,3> &dest, int scale = 1);
00385 
00388 void Add(const QVImage<sFloat> &src1, const QVImage<sFloat> &src2, QVImage<sFloat> &dest);
00389 
00392 void Add(const QVImage<sFloat,3> &src1, const QVImage<sFloat,3> &src2, QVImage<sFloat,3> &dest);
00393 
00408 void Sub(const QVImage<uChar> &src1, const QVImage<uChar> &src2,QVImage<uChar> &dest, int scale = 1);
00409 
00412 void Sub(const QVImage<uChar,3> &src1, const QVImage<uChar,3> &src2,QVImage<uChar,3> &dest, int scale = 1);
00413 
00416 void Sub(const QVImage<sShort> &src1, const QVImage<sShort> &src2,QVImage<sShort> &dest, int scale = 1);
00417 
00420 void Sub(const QVImage<sShort,3> &src1, const QVImage<sShort,3> &src2,QVImage<sShort,3> &dest, int scale = 1);
00421 
00424 void Sub(const QVImage<sFloat> &src1, const QVImage<sFloat> &src2,QVImage<sFloat> &dest);
00425 
00428 void Sub(const QVImage<sFloat,3> &src1, const QVImage<sFloat,3> &src2,QVImage<sFloat,3> &dest);
00429 
00444 void Mul(const QVImage<uChar> &src1, const QVImage<uChar> &src2,QVImage<uChar> &dest, int scale = 1);
00445 
00448 void Mul(const QVImage<uChar,3> &src1, const QVImage<uChar,3> &src2,QVImage<uChar,3> &dest, int scale = 1);
00449 
00452 void Mul(const QVImage<sShort> &src1, const QVImage<sShort> &src2,QVImage<sShort> &dest, int scale = 1);
00453 
00456 void Mul(const QVImage<sShort,3> &src1, const QVImage<sShort,3> &src2,QVImage<sShort,3> &dest, int scale = 1);
00457 
00460 void Mul(const QVImage<sFloat> &src1, const QVImage<sFloat> &src2,QVImage<sFloat> &dest);
00461 
00464 void Mul(const QVImage<sFloat,3> &src1, const QVImage<sFloat,3> &src2,QVImage<sFloat,3> &dest);
00465 
00480 void Div(const QVImage<uChar> &src1, const QVImage<uChar> &src2,QVImage<uChar> &dest, int scale = 1);
00481 
00484 void Div(const QVImage<uChar,3> &src1, const QVImage<uChar,3> &src2,QVImage<uChar,3> &dest, int scale = 1);
00485 
00488 void Div(const QVImage<sShort> &src1, const QVImage<sShort> &src2,QVImage<sShort> &dest, int scale = 1);
00489 
00492 void Div(const QVImage<sShort,3> &src1, const QVImage<sShort,3> &src2,QVImage<sShort,3> &dest, int scale = 1);
00493 
00496 void Div(const QVImage<sFloat> &src1, const QVImage<sFloat> &src2,QVImage<sFloat> &dest);
00497 
00500 void Div(const QVImage<sFloat,3> &src1, const QVImage<sFloat,3> &src2,QVImage<sFloat,3> &dest);
00501 
00513 void MulScale(const QVImage<uChar> &src1, const QVImage<uChar> &src2, QVImage<uChar> &dest);
00514 
00517 void MulScale(const QVImage<uChar,3> &src1, const QVImage<uChar,3> &src2, QVImage<uChar,3> &dest);
00518 
00527 void AbsDiff(const QVImage<uChar> &src1, const QVImage<uChar> &src2,QVImage<uChar> &dest);
00528 
00531 void AbsDiff(const QVImage<sFloat> &src1, const QVImage<sFloat> &src2,QVImage<sFloat> &dest);
00532 
00533 // constant aritmetic
00548 void MulC(const QVImage<uChar> &src, QVImage<uChar> &dest, uChar constant, int scale = 1);
00549 
00552 void MulC(const QVImage<sShort> &src, QVImage<sShort> &dest, sShort constant, int scale = 1);
00553 
00556 void MulC(const QVImage<sFloat> &src, QVImage<sFloat> &dest, sFloat constant);
00557 
00572 void AddC(const QVImage<uChar> &src, QVImage<uChar> &dest, uChar constant, int scale = 1);
00573 
00576 void AddC(const QVImage<sShort> &src, QVImage<sShort> &dest, sShort constant, int scale = 1);
00577 
00580 void AddC(const QVImage<sFloat> &src, QVImage<sFloat> &dest, sFloat constant);
00581 
00597 void SubC(const QVImage<uChar> &src, QVImage<uChar> &dest, uChar constant, int scale = 1);
00598 
00601 void SubC(const QVImage<sShort> &src, QVImage<sShort> &dest, sShort constant, int scale = 1);
00602 
00605 void SubC(const QVImage<sFloat> &src, QVImage<sFloat> &dest, sFloat constant);
00606 
00622 void DivC(const QVImage<uChar> &src, QVImage<uChar> &dest, uChar constant, int scale = 1);
00623 
00626 void DivC(const QVImage<sShort> &src, QVImage<sShort> &dest, sShort constant, int scale = 1);
00627 
00630 void DivC(const QVImage<sFloat> &src, QVImage<sFloat> &dest, sFloat constant);
00631 
00632 // statistics
00637 void Sum(const QVImage<uChar> &src, sDouble & value);
00638 
00641 void Sum(const QVImage<sShort> &src, sDouble & value);
00642 
00649 void Sum(const QVImage<uChar,3> &src, sDouble & r, sDouble & g, sDouble & b);
00650 
00653 void Sum(const QVImage<sShort,3> &src, sDouble & r, sDouble & g, sDouble & b);
00654 
00659 void Mean(const QVImage<uChar> &src, sDouble & value);
00660 
00663 void Mean(const QVImage<sShort> &src, sDouble & value);
00664 
00671 void Mean(const QVImage<uChar,3> &src, sDouble & r, sDouble & g, sDouble & b);
00672 
00675 void Mean(const QVImage<sShort,3> &src, sDouble & r, sDouble & g, sDouble & b);
00676 
00681 void Max(const QVImage<uChar> &src, uChar & value);
00682 
00685 void Max(const QVImage<sShort> &src, sShort & value);
00686 
00689 void Max(const QVImage<sFloat> &src, sFloat & value);
00690 
00697 void Max(const QVImage<uChar,3> &src, uChar & r, uChar & g, uChar & b);
00698 
00701 void Max(const QVImage<sShort,3> &src, sShort &r, sShort &g, sShort &b);
00702 
00707 void Min(const QVImage<uChar> &src, uChar & value);
00708 
00711 void Min(const QVImage<sShort> &src, sShort & value);
00712 
00715 void Min(const QVImage<sFloat> &src, sFloat & value);
00716 
00723 void Min(const QVImage<uChar,3> &src, uChar & r, uChar & g, uChar & b);
00724 
00727 void Min(const QVImage<sShort,3> &src, sShort &r, sShort &g, sShort &b);
00728 
00729 // Filters
00741 void FilterMax(const QVImage<uChar> &src, QVImage<uChar> &dest, uInt colMaskSize, uInt rowMaskSize);
00742 
00745 void FilterMax(const QVImage<sFloat> &src, QVImage<sFloat> &dest, uInt colMaskSize, uInt rowMaskSize);
00746 
00758 void FilterMin(const QVImage<uChar> &src, QVImage<uChar> &dest, uInt colMaskSize, uInt rowMaskSize);
00759 
00762 void FilterMin(const QVImage<sFloat> &src, QVImage<sFloat> &dest, uInt colMaskSize, uInt rowMaskSize);
00763 
00775 void FilterBox(const QVImage<uChar> &src, QVImage<uChar> &dest, uInt colMaskRadius, uInt rowMaskRadius);
00776 
00779 void FilterBox(const QVImage<sFloat> &src, QVImage<sFloat> &dest, uInt colMaskRadius, uInt rowMaskRadius);
00780 
00802 void FilterGauss(const QVImage<uChar> &src, QVImage<uChar> &dest, uInt maskSize);
00803 
00806 void FilterGauss(const QVImage<sFloat> &src, QVImage<sFloat> &dest, uInt maskSize);
00807 
00824 void FilterHipass(const QVImage<uChar> &src, QVImage<uChar> &dest, uInt maskSize = 3);
00825 
00828 void FilterHipass(const QVImage<sFloat> &src, QVImage<sFloat> &dest, uInt maskSize = 3);
00829 
00838 void FilterLowpass(const QVImage<uChar> &src, QVImage<uChar> &dest, uInt maskSize = 3);
00839 
00842 void FilterLowpass(const QVImage<sFloat> &src, QVImage<sFloat> &dest, uInt maskSize = 3);
00843 
00855 void FilterSharpen(const QVImage<uChar> &src, QVImage<uChar> &dest);
00856 
00859 void FilterSharpen(const QVImage<sFloat> &src, QVImage<sFloat> &dest);
00860 
00871 void FilterSobelHoriz(const QVImage<uChar> &src, QVImage<uChar> &dest);
00872 
00875 void FilterSobelHoriz(const QVImage<sShort> &src, QVImage<sShort> &dest);
00876 
00879 void FilterSobelHoriz(const QVImage<sFloat> &src, QVImage<sFloat> &dest);
00880 
00891 void FilterSobelVert(const QVImage<uChar> &src, QVImage<uChar> &dest);
00892 
00895 void FilterSobelVert(const QVImage<sShort> &src, QVImage<sShort> &dest);
00896 
00899 void FilterSobelVert(const QVImage<sFloat> &src, QVImage<sFloat> &dest);
00900 
00920 void FilterSobelHorizMask(const QVImage<sFloat> &src, QVImage<sFloat> &dest, uInt maskSize = 3);
00921 
00939 void FilterSobelVertMask(const QVImage<sFloat> &src, QVImage<sFloat> &dest, uInt maskSize = 3);
00940 
00954 void FilterSobelHorizBorder(const QVImage<uChar> &src, QVImage<sShort> &dest, QVImage<uChar> &buffer, uInt maskSize = 3);
00955 
00969 void FilterSobelNegVertBorder(const QVImage<uChar> &src, QVImage<sShort> &dest, QVImage<uChar> &buffer, uInt maskSize = 3);
00970 
00982 void FilterMedian(const QVImage<uChar> &src, QVImage<uChar> &dest, uInt colMaskRadius = 3, uInt rowMaskRadius = 3);
00983 
00986 void FilterMedian(const QVImage<sShort> &src, QVImage<sShort> &dest, uInt colMaskRadius = 3, uInt rowMaskRadius = 3);
00987 
01003 void Resize(const QVImage<uChar> &src, QVImage<uChar> &dest, int interpolation = IPPI_INTER_LINEAR);
01004 
01007 void Resize(const QVImage<sFloat> &src, QVImage<sFloat> &dest, int interpolation = IPPI_INTER_LINEAR);
01008 
01017 void CannyGetSize(const QVGenericImage &src, QVImage<uChar> &buffer);
01018 
01028 void FilterSobelHorizGetBufferSize(const QVGenericImage &src, QVImage<uChar> &buffer, uInt maskSize = 3);
01029 
01039 void FilterSobelNegVertGetBufferSize(const QVGenericImage &src, QVImage<uChar> &buffer, uInt maskSize = 3);
01040 
01051 void MinEigenValGetBufferSize( const QVGenericImage &src, QVImage<uChar> &buffer, uInt apertureSize = 5, uInt avgWindow = 5);
01052 
01061 void FloodFillGetSize(const QVGenericImage &src, QVImage<uChar> &buffer);
01062 
01100 void Canny(QVImage<sShort> &dX, QVImage<sShort> &dY, QVImage<uChar> &dest,
01101                 QVImage<uChar> &buffer, double low = 50.0, double high = 150.0);
01102 
01105 void Canny(QVImage<sFloat> &dX, QVImage<sFloat> &dY, QVImage<uChar> &dest,
01106                 QVImage<uChar> &buffer, double low = 50.0, double high = 150.0);
01107 
01130 void MinEigenVal(const QVImage<uChar> &src, QVImage<sFloat> &dest, QVImage<uChar> &buffer,
01131         uInt apertureSize = 3, uInt avgWindow = 5, IppiKernelType kernel = ippKernelSobel);
01132 
01141 void FastMarchingGetBufferSize(const QVGenericImage &image, QVImage<uChar> &buffer);
01142 
01156 void FastMarching(const QVImage<uChar> &mask, QVImage<sFloat> &distances, int radius, QVImage<uChar> &buffer);
01157 
01200 void Inpaint(const QVImage<uChar> &src, const QVImage<uChar> &mask, const QVImage<sFloat> &distances,
01201                 QVImage<uChar> &dest, int radius = 4,  IppiInpaintFlag flag = IPP_INPAINT_TELEA);
01202 
01205 void Inpaint(const QVImage<uChar,3> &src, const QVImage<uChar> &mask, const QVImage<sFloat> &distances,
01206                 QVImage<uChar,3> &dest, int radius = 4,  IppiInpaintFlag flag = IPP_INPAINT_TELEA);
01207 
01218 QMap<sInt, int> HistogramRange(const QVImage<uChar, 1> &src, QList<uChar> values = QList<uChar>());
01219 
01240 void FloodFillRange(QVImage<uChar> &img, QVImage<uChar> &buffer,
01241         uInt seedX, uInt seedY, uChar newVal, uChar minDelta, uChar maxDelta);
01242 
01267 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);
01268 
01279 void FilterGaussGetBufferSize(const QVGenericImage &image, QVImage<uChar> &buffer, uInt kernelSize);
01280 
01300 void FindPeaks3x3(const QVImage<sInt, 1> &img, QVImage<uChar> &buffer, QList<QPoint> &points, sInt threshold, IppiNorm norm, uInt border, uInt maxPeakCount);
01301 
01304 void FindPeaks3x3(const QVImage<sFloat, 1> &img, QVImage<uChar> &buffer, QList<QPoint> &points, sFloat threshold, IppiNorm norm, uInt border, uInt maxPeakCount);
01305 
01306 
01316 void FindPeaks3x3GetBufferSize(const QVImage<sInt,1> &image, QVImage<uChar> &buffer);
01317 
01321 void FindPeaks3x3GetBufferSize(const QVImage<sFloat,1> &image, QVImage<uChar> &buffer);
01322 
01323 }
01324 #endif

Generated on Thu Dec 13 13:06:26 2007 for QVision by  doxygen 1.5.3