OpenCV
4.1.0
Open Source Computer Vision
|
Classes | |
class | cv::img_hash::AverageHash |
Computes average hash value of the input image. More... | |
class | cv::img_hash::BlockMeanHash |
Image hash based on block mean. More... | |
class | cv::img_hash::ColorMomentHash |
Image hash based on color moments. More... | |
class | cv::img_hash::ImgHashBase |
The base class for image hash algorithms. More... | |
class | cv::img_hash::MarrHildrethHash |
Marr-Hildreth Operator Based Hash, slowest but more discriminative. More... | |
class | cv::img_hash::PHash |
pHash More... | |
class | cv::img_hash::RadialVarianceHash |
Image hash based on Radon transform. More... | |
Enumerations | |
enum | cv::img_hash::BlockMeanHashMode { cv::img_hash::BLOCK_MEAN_HASH_MODE_0 = 0, cv::img_hash::BLOCK_MEAN_HASH_MODE_1 = 1 } |
Functions | |
void | cv::img_hash::averageHash (cv::InputArray inputArr, cv::OutputArray outputArr) |
Calculates img_hash::AverageHash in one call. | |
void | cv::img_hash::blockMeanHash (cv::InputArray inputArr, cv::OutputArray outputArr, int mode=BLOCK_MEAN_HASH_MODE_0) |
Computes block mean hash of the input image. | |
void | cv::img_hash::colorMomentHash (cv::InputArray inputArr, cv::OutputArray outputArr) |
Computes color moment hash of the input, the algorithm is come from the paper "Perceptual Hashing for Color Images
Using Invariant Moments". | |
void | cv::img_hash::marrHildrethHash (cv::InputArray inputArr, cv::OutputArray outputArr, float alpha=2.0f, float scale=1.0f) |
Computes average hash value of the input image. | |
void | cv::img_hash::pHash (cv::InputArray inputArr, cv::OutputArray outputArr) |
Computes pHash value of the input image. | |
void | cv::img_hash::radialVarianceHash (cv::InputArray inputArr, cv::OutputArray outputArr, double sigma=1, int numOfAngleLine=180) |
Computes radial variance hash of the input image. | |
Provide algorithms to extract the hash of images and fast way to figure out most similar images in huge data set.
Namespace for all functions is cv::img_hash.
You can study more about image hashing from following paper and websites:
As you can see, hash computation speed of img_hash module outperform PHash library a lot.
PS : I do not list out the comparison of Average hash, PHash and Color Moment hash, because I cannot find them in PHash.
Collects useful image hash algorithms into opencv, so we do not need to rewrite them by ourselves again and again or rely on another 3rd party library(ex : PHash library). BOVW or correlation matching are good and robust, but they are very slow compare with image hash, if you need to deal with large scale CBIR(content based image retrieval) problem, image hash is a more reasonable solution.
You can learn more about img_hash modules from following links, these links show you how to find similar image from ukbench dataset, provide thorough benchmark of different attacks(contrast, blur, noise(gaussion,pepper and salt), jpeg compression, watermark, resize).
Introduction to image hash module of opencv Speed up image hashing of opencv(img_hash) and introduce color moment hash
Tham Ngap Wei, thamn gapw ei@gm ail. com
void cv::img_hash::averageHash | ( | cv::InputArray | inputArr, |
cv::OutputArray | outputArr | ||
) |
Calculates img_hash::AverageHash in one call.
inputArr | input image want to compute hash value, type should be CV_8UC4, CV_8UC3 or CV_8UC1. |
outputArr | Hash value of input, it will contain 16 hex decimal number, return type is CV_8U |
void cv::img_hash::blockMeanHash | ( | cv::InputArray | inputArr, |
cv::OutputArray | outputArr, | ||
int | mode = BLOCK_MEAN_HASH_MODE_0 |
||
) |
Computes block mean hash of the input image.
inputArr | input image want to compute hash value, type should be CV_8UC4, CV_8UC3 or CV_8UC1. |
outputArr | Hash value of input, it will contain 16 hex decimal number, return type is CV_8U |
mode |
void cv::img_hash::colorMomentHash | ( | cv::InputArray | inputArr, |
cv::OutputArray | outputArr | ||
) |
Computes color moment hash of the input, the algorithm is come from the paper "Perceptual Hashing for Color Images Using Invariant Moments".
inputArr | input image want to compute hash value, type should be CV_8UC4, CV_8UC3 or CV_8UC1. |
outputArr | 42 hash values with type CV_64F(double) |
void cv::img_hash::marrHildrethHash | ( | cv::InputArray | inputArr, |
cv::OutputArray | outputArr, | ||
float | alpha = 2.0f , |
||
float | scale = 1.0f |
||
) |
Computes average hash value of the input image.
inputArr | input image want to compute hash value, type should be CV_8UC4, CV_8UC3, CV_8UC1. |
outputArr | Hash value of input, it will contain 16 hex decimal number, return type is CV_8U |
alpha | int scale factor for marr wavelet (default=2). |
scale | int level of scale factor (default = 1) |
void cv::img_hash::pHash | ( | cv::InputArray | inputArr, |
cv::OutputArray | outputArr | ||
) |
Computes pHash value of the input image.
inputArr | input image want to compute hash value, type should be CV_8UC4, CV_8UC3, CV_8UC1. |
outputArr | Hash value of input, it will contain 8 uchar value |
void cv::img_hash::radialVarianceHash | ( | cv::InputArray | inputArr, |
cv::OutputArray | outputArr, | ||
double | sigma = 1 , |
||
int | numOfAngleLine = 180 |
||
) |
Computes radial variance hash of the input image.
inputArr | input image want to compute hash value, type should be CV_8UC4, CV_8UC3, CV_8UC1. |
outputArr | Hash value of input |
sigma | Gaussian kernel standard deviation |
numOfAngleLine | The number of angles to consider |