duplikat foto

Temukan Gambar Duplikat menggunakan Java Cloud SDK

Otak kita mendedikasikan dirinya untuk pemrosesan visual dan kecintaan kita pada gambar terletak pada kognisi dan kemampuan kita untuk memperhatikan. Gambar dapat menarik perhatian kita dengan mudah dan banyak perangkat termasuk kamera digital ponsel, pemindai, dll. menghasilkan gambar dalam jumlah besar. Selanjutnya, gambar memiliki algoritme kompresi yang berbeda dan gambar raster sangat umum di antara mereka karena, gambar tersebut menghabiskan lebih sedikit ruang penyimpanan. Namun tetap saja, dengan berlalunya waktu, kami akhirnya membuat foto duplikat, gambar yang berlebihan, dll. Kami memiliki banyak aplikasi yang menawarkan kemampuan untuk menemukan gambar duplikat termasuk pencari gambar duplikat. Jika Anda memiliki gambar yang disimpan di foto google, Anda dapat mencoba menggunakan pencari duplikat foto google, instal pencari duplikat foto windows 10 atau duplikat pencari foto mac (tergantung pada sistem operasi Anda). Namun dalam artikel ini, kita akan menjelaskan cara mengembangkan pencari foto rangkap yang mengagumkan menggunakan REST API yang dapat digunakan di platform apa pun.

API Pemrosesan Gambar

Berbagai aplikasi tersedia untuk pemrosesan gambar yang menawarkan fitur untuk membuat, mengedit, dan memanipulasi file gambar. Mereka juga menyediakan kemampuan termasuk pencarian gambar berdasarkan teknik pencarian gambar terbalik atau algoritma lainnya. Namun, jika Anda tertarik untuk memiliki solusi terprogram berbasis REST API berdasarkan pencarian gambar terbalik, maka Aspose.Imaging Cloud adalah pilihan yang pasti. Mesin pencarinya yang kuat membantu pengembang untuk menambahkan fitur pencarian gambar terbalik di aplikasi mereka pada platform apa pun dengan mulus. Anda bahkan dapat memulai operasi perbandingan gambar untuk menemukan duplikat foto di antara beberapa gambar lainnya. Sebagai hasil dari operasi ini, Anda mendapatkan daftar gambar yang paling mirip sesuai dengan kondisi berikut:

  • Tingkat kesamaan
  • Ambang minimal kesamaan
  • Algoritma perbandingan

Sekarang untuk memiliki pemrosesan gambar yang serupa dan kemampuan pencari gambar duplikat dalam aplikasi Java, kita perlu menggunakan Aspose.Imaging Cloud SDK for Java sebagai pembungkus di sekitar Cloud API. Jadi langkah selanjutnya adalah menambahkan referensinya di proyek java dengan memasukkan informasi berikut di pom.xml dari proyek tipe maven build.

<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>

Sekarang jika Anda belum membuat akun melalui Aspose Cloud Dashboard, Anda dapat mendaftar Uji Coba Gratis melalui alamat email yang valid. Sekarang login menggunakan akun yang baru dibuat dan cari/buat Client ID dan Client Secret di Cloud Dashboard. Detail ini diperlukan untuk tujuan autentikasi di bagian berikut.

Temukan Gambar Duplikat menggunakan Java

Pencarian Gambar Terbalik adalah teknik yang membantu Anda mencari gambar yang mirip secara visual berdasarkan gambar sampel Anda. Diberikan di bawah ini adalah kasus penggunaan yang paling umum untuk fitur ini:

Cari gambar duplikat dan hapus duplikatnya Cari konten gambar serupa Cari konten yang tidak pantas Telusuri gambar yang ditandatangani secara digital

API kami saat ini mendukung pencarian gambar berbasis konten, pencarian gambar duplikat, pencarian gambar dengan tag terdaftar khusus, perbandingan gambar dan deteksi kesamaan dan operasi ekstraksi fitur Gambar. Nah pada bagian ini, kita akan membahas detail tentang cara menemukan gambar duplikat menggunakan teknik gambar terbalik. Sekarang untuk memenuhi persyaratan ini, kami menggunakan algoritme AKAZE untuk deteksi fitur dan algoritme RandomBinaryTree untuk pencocokan fitur dalam contoh. Kami akan mengikuti langkah-langkah ini untuk menemukan gambar duplikat:

  • Unggah Gambar ke Cloud Storage
  • Buat Konteks Pencarian
  • Ekstrak Fitur Gambar
  • Temukan Gambar Duplikat

Unggah Gambar ke Cloud Storage

Harap gunakan cuplikan kode berikut untuk mengunggah file gambar dari drive lokal ke penyimpanan cloud

  • Pertama, buat objek ImagingApi sambil memberikan ClientID dan Client
  • Kedua, baca semua file gambar dari direktori tertentu
  • Filter hanya file gambar dan tambahkan ke daftar yang difilter
  • Unggah gambar ke penyimpanan Cloud menggunakan metode uploadFile(…) sambil mengambil objek UploadFileRequest sebagai argumen
// Dapatkan ClientID dan ClientSecret dari https://dashboard.aspose.cloud/
String clientId = "7ef10407-c1b7-43bd-9603-5ea9c6db83cd";
String clientSecret = "ba7cc4dc0c0478d7b508dd8ffa029845";

// membuat objek Imaging
ImagingApi imageApi = new ImagingApi(clientSecret, clientId);

File directory = new File("/Users/");
//Dapatkan semua file dari folder
File[] allFiles = directory.listFiles();
if (allFiles == null || allFiles.length == 0) {
    throw new RuntimeException("No files present in the directory: " + directory.getAbsolutePath());
}
			 
//Setel ekstensi gambar yang diperlukan di sini.
List<String> supportedImageExtensions = Arrays.asList("jpg", "png", "gif", "webp");
			 
int counter =0;
//Saring hanya file gambar
List<File> acceptedImages = new ArrayList<>();
for (File file : allFiles) {
    //Parsing ekstensi file
    String fileExtension = file.getName().substring(file.getName().lastIndexOf(".") + 1);
    //Periksa apakah ekstensi tercantum dalam EkstensiGambar yang didukung
    if (supportedImageExtensions.stream().anyMatch(fileExtension::equalsIgnoreCase)) {
        //Tambahkan gambar ke daftar yang difilter
        acceptedImages.add(file);
			    
    // memuat presentasi PowerPoint pertama
    byte[] bytes = Files.readAllBytes(file.toPath());
	
    // buat permintaan unggah file
    UploadFileRequest request = new UploadFileRequest(acceptedImages.get(counter).getName(),bytes,null);
    // unggah file gambar ke penyimpanan cloud
    imageApi.uploadFile(request);
    // tingkatkan penghitung file
    counter+=1;
    }
}

Buat Konteks Pencarian

  • Pertama kita perlu menentukan algoritma deteksi fitur sebagai akaze
  • Kedua, tentukan algoritme untuk pencocokan fitur sebagai randomBinaryTree
  • Ketiga, buat Permintaan Pencarian Gambar menggunakan objek CreateImageSearchRequest
  • Sekarang buat buat status konteks pencarian melalui metode createImageSearch(…).
// menentukan algoritma untuk deteksi fitur
String detector = "akaze";
// tentukan algoritma untuk pencocokan fitur
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

// Buat Permintaan Penelusuran Gambar
CreateImageSearchRequest createSearchContextRequest = new CreateImageSearchRequest(detector,matchingAlgorithm, folder, storage);
// buat status konteks pencarian 
SearchContextStatus status = imageApi.createImageSearch(createSearchContextRequest);
			  
// dapatkan ID Status dari Konteks pencarian
String searchContextId = status.getId();

Ekstrak Fitur Gambar

Sekarang saatnya untuk mengekstrak fitur gambar dan menambahkannya ke konteks pencarian.

// Ekstrak fitur gambar dan tambahkan ke konteks pencarian
for (File file : allFiles) 
{
    CreateImageFeaturesRequest request = new CreateImageFeaturesRequest(searchContextId, null, null, "internal", null,null);
		imageApi.createImageFeatures(request);
}

Temukan Gambar Duplikat

  • Tentukan nilai ambang kemiripan
  • Kedua, buat kumpulan gambar duplikat menggunakan objek ImageDuplicatesSet
  • Sekarang ulangi daftar gambar duplikat dan temukan kesamaan gambar menggunakan metode getSimilarity(…).
// tentukan nilai ambang kesamaan
Double similarityThreshold = 90.0;
			    
// membuat kumpulan gambar rangkap
ImageDuplicatesSet result = imageApi.findImageDuplicates(
    new FindImageDuplicatesRequest(status.getId(), similarityThreshold, folder, storage));

// cetak hitungan duplikat gambar
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());
    }
}

Temukan Foto Duplikat menggunakan Perintah cURL

Di bagian ini, kita akan memanfaatkan penggunaan perintah cURL untuk mengakses REST API melalui terminal baris perintah. Sekarang sebagai prasyarat, pertama-tama kita harus membuat token akses JWT (berdasarkan kredensial klien) saat menjalankan perintah berikut.

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"

Langkah ini mengharapkan semua gambar diunggah ke penyimpanan cloud dan sekarang kita perlu membuat ID konteks pencarian melalui panggilan CreateImageSearch API. Silakan jalankan perintah berikut

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>"

Tubuh respons

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

Harap jalankan perintah berikut untuk menemukan duplikat Gambar menggunakan panggilan API FindImageDuplicates. Dalam perintah berikut, ID konteks pencarian yang dihasilkan di atas digunakan.

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>"

Kesimpulan

Pada artikel ini, kita telah mempelajari detail tentang cara menemukan Gambar duplikat menggunakan Java Cloud SDK. Demikian pula, kami telah mempelajari bagaimana perintah cURL dapat berfungsi sebagai pencari gambar duplikat. Jika Anda perlu mencoba API ini di dalam browser, silakan coba gunakan Referensi API swagger. Demikian pula, kami sangat menyarankan untuk menjelajahi Dokumentasi produk untuk mempelajari fitur menarik lainnya yang ditawarkan oleh API ini. Harap perhatikan juga bahwa semua Cloud SDK kami diterbitkan di bawah lisensi MIT, jadi Anda dapat mempertimbangkan untuk mengunduh kode sumber lengkap dari GitHub dan memodifikasinya sesuai kebutuhan Anda. Jika ada masalah, Anda dapat mempertimbangkan untuk menghubungi kami untuk penyelesaian cepat melalui forum dukungan produk gratis.

Artikel Terkait

Silakan kunjungi tautan berikut untuk mempelajari lebih lanjut tentang: