ფოტო დუბლიკატი

იპოვეთ დუბლიკატი სურათები Java Cloud SDK-ის გამოყენებით

ჩვენი ტვინი ეძღვნება ვიზუალურ დამუშავებას და ჩვენი სიყვარული სურათების მიმართ ჩვენს შემეცნებასა და ყურადღების მიქცევის უნარს უკავშირდება. სურათებს შეუძლიათ ადვილად მიიპყრონ ჩვენი ყურადღება და ბევრი მოწყობილობა, მათ შორის მობილური ტელეფონები, ციფრული კამერები, სკანერები და ა.შ. აწარმოებენ დიდი რაოდენობით სურათებს. გარდა ამისა, სურათებს აქვთ სხვადასხვა შეკუმშვის ალგორითმები და რასტრული გამოსახულებები მათ შორის ძალიან გავრცელებულია, რადგან ისინი ნაკლებ ადგილს მოიხმარენ. მაგრამ მაინც, დროთა განმავლობაში, ჩვენ საბოლოოდ ვქმნით დუბლიკატებს, ზედმეტ სურათებს და ა.შ. ჩვენ გვაქვს უამრავი აპლიკაცია, რომელიც გვთავაზობს დუბლიკატი სურათების პოვნის შესაძლებლობებს, მათ შორის დუბლიკატი სურათების მპოვნელს. თუ თქვენ გაქვთ სურათები შენახული Google Photos-ში, შეგიძლიათ სცადოთ გამოიყენოთ google photo დუბლიკატების მაძიებელი, დააინსტალიროთ დუბლიკატი ფოტოების მაძიებელი Windows 10 ან დუბლიკატი ფოტო მაძიებელი mac (დამოკიდებულია თქვენი ოპერაციული სისტემის მიხედვით). თუმცა ამ სტატიაში ჩვენ ვაპირებთ ნათელს მოვფენთ იმაზე, თუ როგორ უნდა განვავითაროთ გასაოცარი დუბლიკატი ფოტოების მაძიებელი REST API-ს გამოყენებით, რომელიც შეიძლება გამოყენებულ იქნას ნებისმიერ პლატფორმაზე.

გამოსახულების დამუშავების API

მრავალფეროვანი აპლიკაციები ხელმისაწვდომია გამოსახულების დამუშავებისთვის, რომლებიც გვთავაზობენ გამოსახულების ფაილების შექმნის, რედაქტირებისა და მანიპულირების ფუნქციებს. ისინი ასევე უზრუნველყოფენ შესაძლებლობებს, მათ შორის გამოსახულების ძიების ჩათვლით, სურათების საპირისპირო ძიების ტექნიკის ან სხვა ალგორითმის საფუძველზე. თუმცა, თუ გაინტერესებთ REST API-ზე დაფუძნებული პროგრამული გადაწყვეტა, რომელიც დაფუძნებულია გამოსახულების საპირისპირო ძიებაზე, მაშინ Aspose.Imaging Cloud არის გარკვეული არჩევანი. მისი მძლავრი საძიებო სისტემა ეხმარება დეველოპერებს, შეუფერხებლად დაამატონ გამოსახულების საპირისპირო ძიების ფუნქციები თავიანთ აპლიკაციაში ნებისმიერ პლატფორმაზე. თქვენ შეგიძლიათ დაიწყოთ სურათების შედარების ოპერაცია, რათა იპოვოთ ფოტო დუბლიკატი რამდენიმე სხვა სურათს შორის. ამ ოპერაციის შედეგად, თქვენ მიიღებთ ყველაზე მსგავსი სურათების ჩამონათვალს შემდეგი პირობების შესაბამისად:

  • მსგავსების ხარისხი
  • მსგავსების მინიმალური ზღვარი
  • შედარების ალგორითმი

ახლა იმისათვის, რომ გვქონდეს მსგავსი გამოსახულების დამუშავება და სურათების დუბლირებული პოვნის შესაძლებლობები Java აპლიკაციის ფარგლებში, ჩვენ უნდა გამოვიყენოთ Aspose.Imaging Cloud SDK for Java, რადგან ის არის Cloud API-ს გარშემო არსებული შეფუთვა. ასე რომ, შემდეგი ნაბიჯი არის მისი მითითების დამატება java პროექტში შემდეგი ინფორმაციის ჩათვლით maven build ტიპის პროექტის pom.xml-ში.

<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-ზე, შეგიძლიათ დარეგისტრირდეთ უფასო საცდელზე მოქმედი ელფოსტის მისამართის მეშვეობით. ახლა შედით სისტემაში ახლად შექმნილი ანგარიშის გამოყენებით და მოძებნეთ/შექმენით კლიენტის ID და კლიენტის საიდუმლო Cloud Dashboard-ზე. ეს დეტალები საჭიროა ავთენტიფიკაციის მიზნებისთვის შემდეგ განყოფილებებში.

იპოვეთ დუბლიკატი სურათები ჯავის გამოყენებით

გამოსახულების საპირისპირო ძიება არის ტექნიკა, რომელიც დაგეხმარებათ მოძებნოთ ვიზუალურად მსგავსი სურათები თქვენი ნიმუშის სურათის საფუძველზე. ქვემოთ მოცემულია ამ ფუნქციის გამოყენების ყველაზე გავრცელებული შემთხვევები:

მოძებნეთ დუბლიკატი სურათი და წაშალეთ დუბლიკატები მოძებნეთ შინაარსის მსგავსი სურათები მოძებნეთ შეუსაბამო შინაარსი მოძებნეთ ციფრულად ხელმოწერილი სურათები

ჩვენი API ამჟამად მხარს უჭერს შიგთავსზე დაფუძნებულ გამოსახულების ძიებას, სურათების დუბლიკატი ძიებას, სურათების ძიებას მორგებული რეგისტრირებული ტეგებით, სურათების შედარებისა და მსგავსების გამოვლენისა და გამოსახულების მახასიათებლების ამოღების ოპერაციებს. ახლა ამ განყოფილებაში ჩვენ განვიხილავთ დეტალებს იმის შესახებ, თუ როგორ უნდა იპოვოთ დუბლიკატი სურათები საპირისპირო გამოსახულების ტექნიკის გამოყენებით. ახლა ამ მოთხოვნის შესასრულებლად, ჩვენ ვიყენებთ AKAZE ალგორითმს მახასიათებლების გამოვლენისთვის და RandomBinaryTree ალგორითმს მაგალითში ფუნქციების შესატყვისად. ჩვენ მივყვებით ამ ნაბიჯებს დუბლიკატი სურათების მოსაძებნად:

  • ატვირთეთ სურათები Cloud Storage-ში
  • შექმენით საძიებო კონტექსტი
  • გამოსახულების მახასიათებლების ამოღება
  • იპოვნეთ დუბლიკატი სურათები

ატვირთეთ სურათები Cloud Storage-ში

გთხოვთ, გამოიყენოთ შემდეგი კოდის ნაწყვეტი სურათის ფაილების ლოკალური დისკიდან ღრუბლოვან საცავში ატვირთვისთვის

  • პირველ რიგში, შექმენით ImagingApi-ს ობიექტი ClientID-ისა და Client-ის მიწოდებისას
  • მეორეც, წაიკითხეთ ყველა სურათის ფაილი მითითებული დირექტორიადან
  • გაფილტრეთ მხოლოდ გამოსახულების ფაილები და დაამატეთ ისინი გაფილტრულ სიაში
  • ატვირთეთ სურათები ღრუბლოვან საცავში 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);
    //შეამოწმეთ, არის თუ არა გაფართოება ჩამოთვლილი მხარდაჭერილImageExtensions-ში
    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);
    // ატვირთეთ სურათის ფაილი ღრუბლოვან საცავში
    imageApi.uploadFile(request);
    // ფაილის მრიცხველის გაზრდა
    counter+=1;
    }
}

შექმენით საძიებო კონტექსტი

  • პირველ რიგში, ჩვენ უნდა დავაკონკრეტოთ მახასიათებლების გამოვლენის ალგორითმი, როგორც akaze
  • მეორეც, მიუთითეთ ალგორითმი ფუნქციების შესატყვისისთვის, როგორც შემთხვევითიBinaryTree
  • მესამე, შექმენით სურათის ძიების მოთხოვნა 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);
			  
// მიიღეთ საძიებო კონტექსტის სტატუსის ID
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 ბრძანებების გამოყენების ბერკეტები REST API-ებზე წვდომისათვის ბრძანების ხაზის ტერმინალში. ახლა, როგორც წინაპირობა, ჩვენ ჯერ უნდა გამოვმუშაოთ 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"

ეს ნაბიჯი მოელის, რომ ყველა სურათი აიტვირთება ღრუბლოვან საცავში და ახლა ჩვენ უნდა შევქმნათ საძიებო კონტექსტის ID 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 ზარის გამოყენებით. შემდეგ ბრძანებაში გამოყენებულია ზემოთ გენერირებული საძიებო კონტექსტის ID.

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-დან და შეცვალოთ იგი თქვენი მოთხოვნების შესაბამისად. ნებისმიერი პრობლემის შემთხვევაში, შეგიძლიათ მოგვმართოთ სწრაფი გადაწყვეტისთვის უფასო [პროდუქტის მხარდაჭერის ფორუმის] მეშვეობით 9.

დაკავშირებული სტატიები

გთხოვთ ეწვიოთ შემდეგ ბმულებს მეტი ინფორმაციისთვის: