digiKam Developer Documentation
Professional Photo Management with the Power of Open Source
Loading...
Searching...
No Matches
Digikam::HaarIface Class Reference

Public Types

enum  AlbumTagRelation {
  NoMix = 0 , Union = 1 , Intersection = 2 , AlbumExclusive = 3 ,
  TagExclusive = 4
}
 
using DuplicatesResultsMap = QMap< qlonglong, QPair< double, QList< qlonglong > > >
 
enum  DuplicatesSearchRestrictions { None = 0 , SameAlbum = 1 , DifferentAlbum = 2 }
 
enum class  RefImageSelMethod : unsigned int {
  OlderOrLarger = 0 , PreferFolder = 1 , ExcludeFolder = 2 , NewerCreationDate = 3 ,
  NewerModificationDate = 4
}
 The RefImageSelMethod enum Selection method to determine which image will be the reference in the duplicate search. More...
 
enum  SketchType { ScannedSketch = 0 , HanddrawnSketch = 1 }
 

Public Member Functions

 HaarIface (const QSet< qlonglong > &images2Scan)
 
QPair< double, QMap< qlonglong, double > > bestMatchesForImageWithThreshold (const QString &imagePath, double requiredPercentage, double maximumPercentage, const QList< int > &targetAlbums, DuplicatesSearchRestrictions searchResultRestriction=DuplicatesSearchRestrictions::None, SketchType type=ScannedSketch)
 Searches the database for the best matches for the specified query image.
 
QPair< double, QMap< qlonglong, double > > bestMatchesForImageWithThreshold (qlonglong imageid, double requiredPercentage, double maximumPercentage, const QList< int > &targetAlbums, DuplicatesSearchRestrictions searchResultRestriction=DuplicatesSearchRestrictions::None, SketchType type=ScannedSketch)
 Searches the database for the best matches for the specified query image.
 
QMap< qlonglong, double > bestMatchesForSignature (const QString &signature, const QList< int > &targetAlbums, int numberOfResults=20, SketchType type=ScannedSketch)
 
DuplicatesResultsMap findDuplicates (const QSet< qlonglong > &images2Scan, const QSet< qlonglong >::const_iterator &rangeBegin, const QSet< qlonglong >::const_iterator &rangeEnd, RefImageSelMethod refImageSelectionMethod, const QSet< qlonglong > &refs, double requiredPercentage, double maximumPercentage, DuplicatesSearchRestrictions searchResultRestriction=DuplicatesSearchRestrictions::None, HaarProgressObserver *const observer=nullptr)
 Fill a map of duplicates images found over a list of images to scan.
 
bool fulfillsRestrictions (qlonglong imageId, int albumId, qlonglong originalImageId, int originalAlbumId, const QList< int > &targetAlbums, DuplicatesSearchRestrictions searchResultRestriction)
 Checks whether the image with the given imageId fulfills all restrictions given in targetAlbums and in respect to searchResultRestriction.
 
void getBestAndWorstPossibleScore (Haar::SignatureData *const querySig, SketchType type, double *const lowestAndBestScore, double *const highestAndWorstScore)
 For a given signature, find out the highest and lowest possible score that any other signature could reach, compared to the given signature.
 
bool indexImage (const QString &filename)
 Adds an image to the index in the database.
 
bool indexImage (const QString &filename, const DImg &image)
 
bool indexImage (const QString &filename, const QImage &image)
 
bool indexImage (qlonglong imageid, const DImg &image)
 
bool indexImage (qlonglong imageid, const QImage &image)
 
QImage loadQImage (const QString &filename)
 This method loads a QImage from the given filename.
 
bool retrieveSignatureFromDB (qlonglong imageid, Haar::SignatureData &sig)
 Retrieve the Haar signature from database using image id.
 
void setAlbumRootsToSearch (const QList< int > &albumRootIds)
 Give a list of albumRoots to which the search shall be limited.
 
void setAlbumRootsToSearch (const QSet< int > &albumRootIds)
 
QString signatureAsText (const QImage &image)
 Calculates the Haar signature, bring it in a form as stored in the DB, and encode it to Ascii data.
 

Static Public Member Functions

static QSet< qlonglong > imagesFromAlbumsAndTags (const QList< int > &albums2Scan, const QList< int > &tags2Scan, AlbumTagRelation relation)
 Collects all images from the given album and tag ids according to their relation.
 
static int preferredSize ()
 
static void rebuildDuplicatesAlbums (const DuplicatesResultsMap &results, bool isAlbumUpdate)
 This method rebuilds the given SAlbums using the given results.
 

Member Enumeration Documentation

◆ RefImageSelMethod

enum class Digikam::HaarIface::RefImageSelMethod : unsigned int
strong

When adding method here, update also HaarIface::findDuplicates()

Enumerator
OlderOrLarger 

Original.

PreferFolder 

Prefer select folder to be the reference.

ExcludeFolder 

Prefer image not in the selected folder.

NewerCreationDate 

Prefer newer creation date image.

NewerModificationDate 

Prefer newer modification date image.

Member Function Documentation

◆ bestMatchesForImageWithThreshold() [1/2]

QPair< double, QMap< qlonglong, double > > Digikam::HaarIface::bestMatchesForImageWithThreshold ( const QString &  imagePath,
double  requiredPercentage,
double  maximumPercentage,
const QList< int > &  targetAlbums,
DuplicatesSearchRestrictions  searchResultRestriction = DuplicatesSearchRestrictions::None,
SketchType  type = ScannedSketch 
)

All matches with a similarity in a given threshold interval are returned. The threshold is in the range requiredPercentage..maximumPercentage.

◆ bestMatchesForImageWithThreshold() [2/2]

QPair< double, QMap< qlonglong, double > > Digikam::HaarIface::bestMatchesForImageWithThreshold ( qlonglong  imageid,
double  requiredPercentage,
double  maximumPercentage,
const QList< int > &  targetAlbums,
DuplicatesSearchRestrictions  searchResultRestriction = DuplicatesSearchRestrictions::None,
SketchType  type = ScannedSketch 
)

All matches with a similarity in a given threshold interval are returned. The threshold is in the range requiredPercentage..maximumPercentage.

◆ findDuplicates()

HaarIface::DuplicatesResultsMap Digikam::HaarIface::findDuplicates ( const QSet< qlonglong > &  images2Scan,
const QSet< qlonglong >::const_iterator &  rangeBegin,
const QSet< qlonglong >::const_iterator &  rangeEnd,
RefImageSelMethod  refImageSelectionMethod,
const QSet< qlonglong > &  refs,
double  requiredPercentage,
double  maximumPercentage,
DuplicatesSearchRestrictions  searchResultRestriction = DuplicatesSearchRestrictions::None,
HaarProgressObserver *const  observer = nullptr 
)

For each map item, the result values is list of candidate images which are duplicates of the key image. All images are referenced by id from database. The threshold is in the range 0..1, with 1 meaning identical signature.

◆ loadQImage()

QImage Digikam::HaarIface::loadQImage ( const QString &  filename)
Parameters
filenamethe name of the file (path)
Returns
A QImage, non-null on success.

◆ rebuildDuplicatesAlbums()

void Digikam::HaarIface::rebuildDuplicatesAlbums ( const DuplicatesResultsMap &  results,
bool  isAlbumUpdate 
)
static
Parameters
resultsMap of duplicates images found over a list of images.
isAlbumUpdateif true update the SAlbums in the database.

◆ retrieveSignatureFromDB()

bool Digikam::HaarIface::retrieveSignatureFromDB ( qlonglong  imageid,
Haar::SignatureData sig 
)
Returns
true if item signature exist else false.

◆ setAlbumRootsToSearch()

void Digikam::HaarIface::setAlbumRootsToSearch ( const QList< int > &  albumRootIds)

Calling with an empty list will disable filtering.

◆ signatureAsText()

QString Digikam::HaarIface::signatureAsText ( const QImage &  image)

Can be used for bestMatchesForSignature.