IP Library Granted Patent US 9,824,299
Granted Patent B2
US 9,824,299 · App. 14/987,461 · Granted Nov 21, 2017

Automatic image duplication identification

Inventor: Shakti Suman (Muzaffarpur, IN)
Assignee: Bank of America Corporation
G06K9/6215G06F17/30247G06T7/00H04N19/70G06T2207/30168
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,824,299
App. No.
14/987,461
Granted
Nov 21, 2017
Kind
B2
Abstract

Various features described herein may include ways of processing multiple images to determine whether any duplicates are among the multiple images. A hashing algorithm may be used to create a hash key of an image. Multiple hash keys corresponding to multiple images may be compared to determine whether those images are duplicate images. A root mean square algorithm may be used to further identify whether multiple images are duplicate images. An image variation engine, which uses intensity coding, may be used to display differences between images. For example, similar areas in images may be drawn with low intensity or high opacity, while different areas in images may be drawn with high intensity or low opacity.

Claims (118)

1. A method comprising:

receiving, by a computing device, a first image and a second image;

computing, by the computing device, a first hash of the first image;

computing, by the computing device, a second hash of the second image;

generating, by the computing device, based on comparing the first hash of the first image and the second hash of the second image, a preliminary estimate of whether the first image and the second image are duplicate images; and

if the preliminary estimate is that the first image and the second image are duplicate images:

generating, by the computing device, a first byte container using the first image;

generating, by the computing device, a second byte container using the second image;

generating, by the computing device, difference data by subtracting the first byte container from the second byte container;

generating, by the computing device, a histogram of the difference data;

computing, by the computing device, a sum of squares for each point in the histogram;

computing, by the computing device, a root mean value for the sum of squares;

determining, by the computing device, whether the root mean value for the sum of squares is within a score variation range;

if the root mean value for the sum of squares is within the score variation range, determining, by the computing device, that the first image and the second image are duplicate images; and

if the root mean value for the sum of squares is not within the score variation range, determining, by the computing device, that the first image and the second image are not duplicate images.

2. The method of claim 1 , wherein generating the first byte container using the first image comprises converting the first image to a byte array.

3. The method of claim 1 , comprising:

determining, by the computing device, an image format of the first image;

determining, by the computing device, an image format of the second image; and

in a case that the image format of the first image is different from the image format of the second image, converting, by the computing device, at least one of the first image and the second image to a different image format, wherein after the converting, the first image and the second image are in a same format.

4. The method of claim 1 , wherein generating the histogram for the difference data comprises generating a graphical representation of differences in tonal distribution between the first image and the second image.

5. The method of claim 1 , comprising:

receiving, by the computing device, a first sample image and a second sample image, wherein the first sample image and the second sample image are duplicate images;

generating, by the computing device, a first sample byte container using the first sample image;

generating, by the computing device, a second sample byte container using the second sample image;

generating, by the computing device, sample difference data by subtracting the first sample byte container from the second sample byte container;

computing, by the computing device, a sample root mean value for a sum of squares for each point in a histogram of the sample difference data; and

using, by the computing device, the sample root mean value to determine the score variation range.

6. The method of claim 5 , wherein the second sample image is different from the first sample image due to one or more of noise and skew.

7. The method of claim 5 , wherein the first image sample and the second image sample are each compressed using a same image compression format, and wherein the score variation range is for images using the same image compression format.

8. The method of claim 1 , comprising:

determining, by the computing device, that the first image is skewed; and

processing, by the computing device, the first image to create an altered first image that is not skewed,

wherein generating, by the computing device, the first byte container using the first image comprises generating, by the computing device, the first byte container using the altered first image that is not skewed.

9. The method of claim 1 , comprising:

determining, by the computing device, whether the first image is skewed above a skew threshold; and

in a case that the first image is skewed above the skew threshold, processing, by the computing device, the first image to create an altered first image that is not skewed, wherein generating, by the computing device, the first byte container using the first image comprises generating, by the computing device, the first byte container using the altered first image that is not skewed,

wherein in a case that the first image is skewed below the skew threshold, generating, by the computing device, the first byte container using the first image using the first image comprises generating, by the computing device, the first byte container using the first image skewed below the skew threshold.

10. The method of claim 1 , wherein the first hash and the second hash are computed using one of a difference hash, an average hash, and a perceptive hash.

11. The method of claim 1 , comprising:

comparing, by the computing device, the first hash of the first image and the second hash of the second image to determine a similarity level between the first hash and the second hash; and

determining, by the computing device, whether the similarity level between the first hash and the second hash is above a threshold level,

wherein if the similarity level between the first hash and the second hash is above a threshold level, the preliminary estimate is that the first image and the second image are duplicate images, and

wherein if the similarity level between the first hash and the second hash is below the threshold level, the preliminary estimate is that the first image and the second image are not duplicate images.

12. The method of claim 11 , wherein the threshold level is 98.5% similarity between the first hash of the first image and the second hash of the second image.

13. The method of claim 11 , wherein comparing the first hash of the first image and the second hash of the second image comprises comparing a first viable perceptive area of the first image and a second viable perceptive area of the second image.

14. The method of claim 1 , comprising:

determining, by the computing device, first image data from one or more planes of the first image; and

determining, by the computing device, second image data from one or more planes of the second image,

wherein generating the difference data comprises subtracting, by the computing device, the first image data from the second image data.

15. The method of claim 14 , wherein the one or more planes of the first image comprise one or more of a size, a color, a resolution, a red channel, a green channel, a blue channel, and an alpha channel.

16. The method of claim 1 , wherein the first image is of a document containing handwritten text and the second image is of a document containing printed text.

17. The method of claim 1 , comprising:

if the root mean value for the sum of squares is within the score variation range, generating, by the computing device, a notification that the first image and the second image are duplicate images; and

if the root mean value for the sum of squares is not within the score variation range, generating, by the computing device, a notification that the first image and the second image are not duplicate images.

18. The method of claim 1 , wherein the first image contains noise, and wherein the second image does not contain the noise, and wherein the root mean value for the sum of squares is a non-zero value based on the noise of the first image.

19. Non-transitory computer-readable media storing executable instructions that, when executed by at least one processor, cause a system to:

receive a first image and a second image;

compute a first hash of the first image;

computing a second hash of the second image;

generate, based on comparing the first hash of the first image and the second hash of the second image, a preliminary estimate of whether the first image and the second image are duplicate images; and

if the preliminary estimate is that the first image and the second image are duplicate images:

generate a first byte container using the first image;

generate a second byte container using the second image;

generate difference data by subtracting the first byte container from the second byte container;

generate a histogram of the difference data;

compute a sum of squares for each point in the histogram;

compute a root mean value for the sum of squares;

determine whether the root mean value for the sum of squares is within a score variation range;

if the root mean value for the sum of squares is within the score variation range, determine that the first image and the second image are duplicate images; and

if the root mean value for the sum of squares is not within the score variation range, determine that the first image and the second image are not duplicate images.

20. A system comprising:

at least one processor; and

non-transitory memory storing executable instructions that, when executed by the at least one processor, cause the system to:

receive a first image and a second image;

compute a first hash of the first image;

computing a second hash of the second image;

generate, based on comparing the first hash of the first image and the second hash of the second image, a preliminary estimate of whether the first image and the second image are duplicate images; and

if the preliminary estimate is that the first image and the second image are duplicate images:

generate a first byte container using the first image;

generate a second byte container using the second image;

generate difference data by subtracting the first byte container from the second byte container;

generate a histogram of the difference data;

compute a sum of squares for each point in the histogram;

compute a root mean value for the sum of squares;

determine whether the root mean value for the sum of squares is within a score variation range;

if the root mean value for the sum of squares is within the score variation range, determine that the first image and the second image are duplicate images; and

if the root mean value for the sum of squares is not within the score variation range, determine that the first image and the second image are not duplicate images.

21. The system of claim 20 , wherein the non-transitory memory stores further executable instructions that, when executed by the at least one processor, cause the system to:

receive a first sample image and a second sample image, wherein the first sample image and the second sample image are duplicate images;

generate a first sample byte container using the first sample image;

generate a second sample byte container using the second sample image;

generate sample difference data by subtracting the first sample byte container from the second sample byte container;

compute a sample root mean value for a sum of squares for each point in a histogram of the sample difference data; and

use the sample root mean value to determine the score variation range.

22. The system of claim 20 , wherein the non-transitory memory stores further executable instructions that, when executed by the at least one processor, cause the system to:

compare the first hash of the first image and the second hash of the second image to determine a similarity level between the first hash and the second hash; and

determine whether the similarity level between the first hash and the second hash is above a threshold level,

wherein if the similarity level between the first hash and the second hash is above a threshold level, the preliminary estimate is that the first image and the second image are duplicate images, and

wherein if the similarity level between the first hash and the second hash is below the threshold level, the preliminary estimate is that the first image and the second image are not duplicate images.

23. The system of claim 20 , wherein the non-transitory memory stores further executable instructions that, when executed by the at least one processor, cause the system to:

if the root mean value for the sum of squares is within the score variation range, generate a notification that the first image and the second image are duplicate images; and

if the root mean value for the sum of squares is not within the score variation range, generate a notification that the first image and the second image are not duplicate images.

24. The non-transitory computer-readable media of claim 19 , storing further executable instructions that, when executed by the at least one processor, cause the system to:

receive a first sample image and a second sample image, wherein the first sample image and the second sample image are duplicate images;

generate a first sample byte container using the first sample image;

generate a second sample byte container using the second sample image;

generate sample difference data by subtracting the first sample byte container from the second sample byte container;

compute a sample root mean value for a sum of squares for each point in a histogram of the sample difference data; and

use the sample root mean value to determine the score variation range.

25. The non-transitory computer-readable media of claim 19 , storing further executable instructions that, when executed by the at least one processor, cause the system to:

compare the first hash of the first image and the second hash of the second image to determine a similarity level between the first hash and the second hash; and

determine whether the similarity level between the first hash and the second hash is above a threshold level,

wherein if the similarity level between the first hash and the second hash is above a threshold level, the preliminary estimate is that the first image and the second image are duplicate images, and

wherein if the similarity level between the first hash and the second hash is below the threshold level, the preliminary estimate is that the first image and the second image are not duplicate images.

26. The non-transitory computer-readable media of claim 19 , storing further executable instructions that, when executed by the at least one processor, cause the system to:

if the root mean value for the sum of squares is within the score variation range, generate a notification that the first image and the second image are duplicate images; and

if the root mean value for the sum of squares is not within the score variation range, generate a notification that the first image and the second image are not duplicate images.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 4, 2016
From: SUMAN, SHAKTI
To: BANK OF AMERICA CORPORATION
Reel/Frame 037403/0516 →
Continuity (1)
Related Publication 20170193329A1 · Jul 6, 2017