φωτογραφία διπλό

Βρείτε διπλότυπες εικόνες χρησιμοποιώντας το Java Cloud SDK

Ο εγκέφαλός μας αφιερώνεται στην οπτική επεξεργασία και η αγάπη μας για τις εικόνες έγκειται στη γνώση και την ικανότητά μας να δίνουμε προσοχή. Οι εικόνες μπορούν να τραβήξουν την προσοχή μας εύκολα και πολλές συσκευές, συμπεριλαμβανομένων ψηφιακών φωτογραφικών μηχανών για κινητά τηλέφωνα, σαρωτές κ.λπ. παράγουν μεγάλη ποσότητα εικόνων. Επιπλέον, οι εικόνες έχουν διαφορετικούς αλγόριθμους συμπίεσης και οι εικόνες ράστερ είναι πολύ κοινές μεταξύ τους επειδή καταναλώνουν λιγότερο χώρο αποθήκευσης. Ωστόσο, με το πέρασμα του χρόνου, καταλήγουμε να δημιουργούμε διπλές φωτογραφίες, περιττές εικόνες κ.λπ. Έχουμε μια πληθώρα εφαρμογών που προσφέρουν τη δυνατότητα εύρεσης διπλών εικόνων, συμπεριλαμβανομένου του ανιχνευτή διπλότυπων εικόνων. Σε περίπτωση που έχετε αποθηκευμένες εικόνες σε φωτογραφίες Google, μπορείτε να δοκιμάσετε να χρησιμοποιήσετε το google duplicate finder, να εγκαταστήσετε το duplicate photo finder windows 10 ή το duplicate photo finder mac (ανάλογα με το λειτουργικό σας σύστημα). Ωστόσο, σε αυτό το άρθρο, θα ρίξουμε φως στον τρόπο ανάπτυξης ενός εκπληκτικού διπλότυπου εύρεσης φωτογραφιών χρησιμοποιώντας το REST API που μπορεί να χρησιμοποιηθεί σε οποιαδήποτε πλατφόρμα.

API επεξεργασίας εικόνας

Μια ποικιλία εφαρμογών είναι διαθέσιμες για επεξεργασία εικόνας που προσφέρουν τις δυνατότητες δημιουργίας, επεξεργασίας και χειρισμού αρχείων εικόνας. Παρέχουν επίσης τις δυνατότητες, συμπεριλαμβανομένης της αναζήτησης εικόνων με βάση τεχνικές αντίστροφης αναζήτησης εικόνων ή οποιονδήποτε άλλο αλγόριθμο. Ωστόσο, αν σας ενδιαφέρει να έχετε προγραμματική λύση REST API που βασίζεται σε αντίστροφη αναζήτηση εικόνων, τότε το Aspose.Imaging Cloud είναι η σίγουρη επιλογή. Η ισχυρή μηχανή αναζήτησής του βοηθά τους προγραμματιστές να προσθέτουν λειτουργίες αντίστροφης αναζήτησης εικόνων στην εφαρμογή τους σε οποιαδήποτε πλατφόρμα χωρίς προβλήματα. Μπορείτε ακόμη να ξεκινήσετε τη λειτουργία σύγκρισης εικόνων για να βρείτε διπλότυπες φωτογραφίες μεταξύ πολλών άλλων εικόνων. Ως αποτέλεσμα αυτής της λειτουργίας, λαμβάνετε τη λίστα με τις περισσότερες παρόμοιες εικόνες σύμφωνα με τις ακόλουθες συνθήκες:

  • Βαθμός ομοιότητας
  • Το ελάχιστο όριο ομοιότητας
  • Αλγόριθμος σύγκρισης

Τώρα, για να έχουμε παρόμοιες δυνατότητες επεξεργασίας εικόνας και διπλότυπων δυνατοτήτων εύρεσης εικόνας εντός της εφαρμογής Java, πρέπει να χρησιμοποιήσουμε το Aspose.Imaging Cloud SDK για Java καθώς είναι ένα περιτύλιγμα γύρω από το Cloud API. Έτσι, το επόμενο βήμα είναι να προσθέσετε την αναφορά του στο έργο java συμπεριλαμβάνοντας τις ακόλουθες πληροφορίες στο pom.xml του έργου τύπου κατασκευής maven.

<repositories> 
    <repository>
        <id>aspose-cloud</id>
        <name>artifact.aspose-cloud-releases</name>
        <url>http://artifact.aspose.cloud/repo</url>
    </repository>   
</repositories>

<dependencies>
    <dependency>
        <groupId>com.aspose</groupId>
        <artifactId>aspose-imaging-cloud</artifactId>
        <version>22.4</version>
    </dependency>
</dependencies>

Τώρα, αν δεν έχετε δημιουργήσει λογαριασμό μέσω του Aspose Cloud Dashboard, μπορείτε να εγγραφείτε για δωρεάν δοκιμή μέσω μιας έγκυρης διεύθυνσης email. Τώρα συνδεθείτε χρησιμοποιώντας νέο λογαριασμό και αναζητήστε/δημιουργήστε Client ID και Client Secret στο Cloud Dashboard. Αυτές οι λεπτομέρειες απαιτούνται για σκοπούς ελέγχου ταυτότητας στις ακόλουθες ενότητες.

Βρείτε διπλότυπες εικόνες χρησιμοποιώντας Java

Η αντίστροφη αναζήτηση εικόνων είναι μια τεχνική που σας βοηθά να αναζητήσετε οπτικά παρόμοιες εικόνες με βάση το δείγμα της εικόνας σας. Παρακάτω αναφέρονται οι πιο συνηθισμένες περιπτώσεις χρήσης αυτής της δυνατότητας:

Αναζητήστε διπλότυπη εικόνα και αφαιρέστε τα διπλότυπα Αναζήτηση για παρόμοιες εικόνες περιεχομένου Αναζήτηση για ακατάλληλο περιεχόμενο Αναζήτηση εικόνων με ψηφιακή υπογραφή

Το API μας υποστηρίζει αυτήν τη στιγμή αναζήτηση εικόνων βάσει περιεχομένου, αναζήτηση διπλών εικόνων, αναζήτηση εικόνων με προσαρμοσμένες καταχωρημένες ετικέτες, σύγκριση εικόνων και ανίχνευση ομοιότητας και λειτουργίες εξαγωγής χαρακτηριστικών εικόνας. Τώρα σε αυτήν την ενότητα, θα συζητήσουμε τις λεπτομέρειες σχετικά με τον τρόπο εύρεσης διπλών εικόνων χρησιμοποιώντας την τεχνική αντίστροφης εικόνας. Τώρα για να εκπληρώσουμε αυτήν την απαίτηση, χρησιμοποιούμε τον αλγόριθμο AKAZE για την ανίχνευση χαρακτηριστικών και τον αλγόριθμο RandomBinaryTree για την αντιστοίχιση χαρακτηριστικών στο παράδειγμα. Θα ακολουθήσουμε αυτά τα βήματα για να βρούμε τις διπλότυπες εικόνες:

  • Μεταφορτώστε εικόνες στο Cloud Storage
  • Δημιουργία πλαισίου αναζήτησης
  • Εξαγωγή χαρακτηριστικών εικόνας
  • Βρείτε διπλότυπες εικόνες

Μεταφορτώστε εικόνες στο Cloud Storage

Χρησιμοποιήστε το παρακάτω απόσπασμα κώδικα για να ανεβάσετε αρχεία εικόνας από την τοπική μονάδα δίσκου στο χώρο αποθήκευσης cloud

  • Αρχικά, δημιουργήστε ένα αντικείμενο του ImagingApi παρέχοντας ταυτόχρονα ClientID και Client
  • Δεύτερον, διαβάστε όλα τα αρχεία εικόνας από τον καθορισμένο κατάλογο
  • Φιλτράρετε μόνο αρχεία εικόνας και προσθέστε τα στη φιλτραρισμένη λίστα
  • Μεταφορτώστε τις εικόνες στο χώρο αποθήκευσης Cloud χρησιμοποιώντας τη μέθοδο uploadFile(…) ενώ λαμβάνετε ως όρισμα το αντικείμενο UploadFileRequest
// Λάβετε ClientID και ClientSecret από https://dashboard.aspose.cloud/
String clientId = "7ef10407-c1b7-43bd-9603-5ea9c6db83cd";
String clientSecret = "ba7cc4dc0c0478d7b508dd8ffa029845";

// δημιουργία αντικειμένου απεικόνισης
ImagingApi imageApi = new ImagingApi(clientSecret, clientId);

File directory = new File("/Users/");
//Λάβετε όλα τα αρχεία από το φάκελο
File[] allFiles = directory.listFiles();
if (allFiles == null || allFiles.length == 0) {
    throw new RuntimeException("No files present in the directory: " + directory.getAbsolutePath());
}
			 
//Ορίστε τις απαιτούμενες επεκτάσεις εικόνας εδώ.
List<String> supportedImageExtensions = Arrays.asList("jpg", "png", "gif", "webp");
			 
int counter =0;
//Φιλτράρετε μόνο αρχεία εικόνας
List<File> acceptedImages = new ArrayList<>();
for (File file : allFiles) {
    //Αναλύστε την επέκταση αρχείου
    String fileExtension = file.getName().substring(file.getName().lastIndexOf(".") + 1);
    //Ελέγξτε εάν η επέκταση παρατίθεται στις υποστηριζόμενες ΕπεκτάσειςImage
    if (supportedImageExtensions.stream().anyMatch(fileExtension::equalsIgnoreCase)) {
        //Προσθέστε την εικόνα στη φιλτραρισμένη λίστα
        acceptedImages.add(file);
			    
    // φόρτωση της πρώτης παρουσίασης PowerPoint
    byte[] bytes = Files.readAllBytes(file.toPath());
	
    // δημιουργία αιτήματος μεταφόρτωσης αρχείου
    UploadFileRequest request = new UploadFileRequest(acceptedImages.get(counter).getName(),bytes,null);
    // μεταφορτώστε το αρχείο εικόνας στο χώρο αποθήκευσης cloud
    imageApi.uploadFile(request);
    // αύξηση του μετρητή αρχείων
    counter+=1;
    }
}

Δημιουργία πλαισίου αναζήτησης

  • Πρώτα πρέπει να καθορίσουμε τον αλγόριθμο ανίχνευσης χαρακτηριστικών ως akaze
  • Δεύτερον, καθορίστε τον αλγόριθμο για την αντιστοίχιση χαρακτηριστικών ως randomBinaryTree
  • Τρίτον, δημιουργήστε το αίτημα αναζήτησης εικόνων χρησιμοποιώντας το αντικείμενο CreateImageSearchRequest
  • Τώρα δημιουργήστε την κατάσταση δημιουργίας περιβάλλοντος αναζήτησης μέσω της μεθόδου createImageSearch(…).
// καθορίστε αλγόριθμο για την ανίχνευση χαρακτηριστικών
String detector = "akaze";
// καθορίστε αλγόριθμο για αντιστοίχιση χαρακτηριστικών
String matchingAlgorithm = "randomBinaryTree";

String folder = null; // File will be saved at the root of the storage
String storage = null; // We are using default Cloud Storage

// Δημιουργία αιτήματος αναζήτησης εικόνων
CreateImageSearchRequest createSearchContextRequest = new CreateImageSearchRequest(detector,matchingAlgorithm, folder, storage);
// δημιουργία κατάστασης περιβάλλοντος αναζήτησης 
SearchContextStatus status = imageApi.createImageSearch(createSearchContextRequest);
			  
// λάβετε το αναγνωριστικό κατάστασης του πλαισίου αναζήτησης
String searchContextId = status.getId();

Εξαγωγή χαρακτηριστικών εικόνας

Τώρα είναι καιρός να εξαγάγετε λειτουργίες εικόνων και να τις προσθέσετε στο πλαίσιο αναζήτησης.

// Εξαγάγετε λειτουργίες εικόνων και προσθέστε τις στο πλαίσιο αναζήτησης
for (File file : allFiles) 
{
    CreateImageFeaturesRequest request = new CreateImageFeaturesRequest(searchContextId, null, null, "internal", null,null);
		imageApi.createImageFeatures(request);
}

Βρείτε διπλότυπες εικόνες

  • Καθορίστε την τιμή κατωφλίου ομοιότητας
  • Δεύτερον, δημιουργήστε διπλό σύνολο εικόνων χρησιμοποιώντας το αντικείμενο ImageDuplicatesSet
  • Τώρα επαναλάβετε τη λίστα των διπλότυπων εικόνων και βρείτε την ομοιότητα εικόνας χρησιμοποιώντας τη μέθοδο getSimilarity(…)
// καθορίστε την τιμή κατωφλίου ομοιότητας
Double similarityThreshold = 90.0;
			    
// δημιουργήστε διπλό σύνολο εικόνων
ImageDuplicatesSet result = imageApi.findImageDuplicates(
    new FindImageDuplicatesRequest(status.getId(), similarityThreshold, folder, storage));

// εκτυπώστε τον αριθμό των διπλών εικόνων
System.out.println("Duplicates Set Count: " + result.getDuplicates().size());
for (ImageDuplicates duplicates : result.getDuplicates())
{
    System.out.println("Duplicates:");
		for (SearchResult duplicate : duplicates.getDuplicateImages())
		{
		    System.out.println("ImageName: " + duplicate.getImageId() +
			      ", Similarity: " + duplicate.getSimilarity());
    }
}

Βρείτε Διπλότυπο φωτογραφιών χρησιμοποιώντας εντολές cURL

Σε αυτήν την ενότητα, θα αξιοποιήσουμε τη χρήση εντολών cURL για πρόσβαση στα API REST μέσω του τερματικού της γραμμής εντολών. Τώρα ως προαπαιτούμενο, πρέπει πρώτα να δημιουργήσουμε ένα διακριτικό πρόσβασης JWT (με βάση τα διαπιστευτήρια πελάτη) ενώ εκτελούμε την ακόλουθη εντολή.

curl -v "https://api.aspose.cloud/connect/token" \
-X POST \
-d "grant_type=client_credentials&client_id=bb959721-5780-4be6-be35-ff5c3a6aa4a2&client_secret=4d84d5f6584160cbd91dba1fe145db14" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Accept: application/json"

Αυτό το βήμα αναμένει ότι όλες οι εικόνες μεταφορτώνονται στο χώρο αποθήκευσης cloud και τώρα πρέπει να δημιουργήσουμε το αναγνωριστικό περιβάλλοντος αναζήτησης μέσω της κλήσης CreateImageSearch API. Εκτελέστε την ακόλουθη εντολή

curl -v -X POST "https://api.aspose.cloud/v3.0/imaging/ai/imageSearch/create?detector=akaze&matchingAlgorithm=randomBinaryTree" \
-H  "accept: application/json" \
-H  "authorization: Bearer <JWT Token>"

Σώμα ανταπόκρισης

{
  "id": "0b9ac539-07fb-462a-91cb-8a8d5069ba4d",
  "searchStatus": "Idle"
}

Εκτελέστε την ακόλουθη εντολή για να βρείτε διπλότυπα εικόνων χρησιμοποιώντας την κλήση FindImageDuplicates API. Στην ακόλουθη εντολή, χρησιμοποιείται το αναγνωριστικό περιβάλλοντος αναζήτησης που δημιουργήθηκε παραπάνω.

curl -v -X GET "https://api.aspose.cloud/v3.0/imaging/ai/imageSearch/da150333-57b4-4371-b13d-4889578ce2bd/findDuplicates?similarityThreshold=90" \
-H  "accept: application/json" \
-H  "authorization: Bearer <JWT Token>"

συμπέρασμα

Σε αυτό το άρθρο, μάθαμε για τις λεπτομέρειες σχετικά με τον τρόπο εύρεσης διπλότυπων εικόνων χρησιμοποιώντας το Java Cloud SDK. Ομοίως, μάθαμε πώς οι εντολές cURL μπορούν να χρησιμεύσουν ως διπλότυπη εύρεση εικόνων. Σε περίπτωση που χρειαστεί να δοκιμάσετε αυτά τα API στο πρόγραμμα περιήγησης, δοκιμάστε να χρησιμοποιήσετε το swagger API Reference. Ομοίως, συνιστούμε ανεπιφύλακτα να εξερευνήσετε την Τεκμηρίωση προϊόντος για να μάθετε άλλες συναρπαστικές λειτουργίες που προσφέρονται από αυτό το API. Επίσης, σημειώστε ότι όλα τα Cloud SDK μας δημοσιεύονται με άδεια MIT, επομένως μπορείτε να εξετάσετε το ενδεχόμενο λήψης του πλήρους πηγαίο κώδικα από το GitHub και να τον τροποποιήσετε σύμφωνα με τις απαιτήσεις σας. Σε περίπτωση οποιουδήποτε ζητήματος, μπορείτε να εξετάσετε το ενδεχόμενο να μας προσεγγίσετε για γρήγορη επίλυση μέσω του δωρεάν φόρουμ υποστήριξης προϊόντων.

Σχετικά Άρθρα

Επισκεφτείτε τους παρακάτω συνδέσμους για να μάθετε περισσότερα σχετικά με: