আমাদের মস্তিষ্ক ভিজ্যুয়াল প্রসেসিংয়ে নিজেকে উৎসর্গ করে এবং ছবির প্রতি আমাদের ভালোবাসা আমাদের বোধশক্তি এবং মনোযোগ দেওয়ার ক্ষমতার উপর নির্ভর করে। ছবিগুলি সহজেই আমাদের মনোযোগ আকর্ষণ করতে সক্ষম হয় এবং সেলুলার ফোন ডিজিটাল ক্যামেরা, স্ক্যানার ইত্যাদি সহ অনেক ডিভাইস প্রচুর পরিমাণে ছবি তৈরি করে। আরও, ইমেজগুলির বিভিন্ন কম্প্রেশন অ্যালগরিদম রয়েছে এবং রাস্টার ইমেজগুলি তাদের মধ্যে খুব সাধারণ কারণ, তারা কম স্টোরেজ স্পেস ব্যবহার করে। কিন্তু তারপরও, সময়ের সাথে সাথে, আমরা ডুপ্লিকেট ফটো, অপ্রয়োজনীয় ছবি ইত্যাদি তৈরি করে ফেলি। আমাদের কাছে ডুপ্লিকেট ছবি ফাইন্ডার সহ ডুপ্লিকেট ইমেজ খুঁজে বের করার ক্ষমতা প্রদানকারী অ্যাপ্লিকেশনের আধিক্য রয়েছে। আপনার যদি গুগল ফটোতে ছবি সংরক্ষিত থাকে তবে আপনি গুগল ফটো ডুপ্লিকেট ফাইন্ডার ব্যবহার করে দেখতে পারেন, ডুপ্লিকেট ফটো ফাইন্ডার উইন্ডোজ 10 বা ডুপ্লিকেট ফটো ফাইন্ডার ম্যাক (আপনার অপারেটিং সিস্টেমের উপর নির্ভর করে) ইনস্টল করতে পারেন। যাইহোক, এই নিবন্ধে, আমরা কীভাবে REST API ব্যবহার করে একটি দুর্দান্ত ডুপ্লিকেট ফটো ফাইন্ডার তৈরি করতে পারি যা যে কোনও প্ল্যাটফর্মে ব্যবহার করা যেতে পারে সে সম্পর্কে আলোকপাত করতে যাচ্ছি।
- ইমেজ প্রসেসিং API
- জাভা ব্যবহার করে ডুপ্লিকেট ছবি খুঁজুন
- CURL কমান্ড ব্যবহার করে ফটো ডুপ্লিকেট খুঁজুন
ইমেজ প্রসেসিং API
ইমেজ প্রসেসিংয়ের জন্য বিভিন্ন ধরনের অ্যাপ্লিকেশন উপলব্ধ রয়েছে যা ইমেজ ফাইল তৈরি, সম্পাদনা এবং ম্যানিপুলেট করার বৈশিষ্ট্যগুলি অফার করে। তারা বিপরীত চিত্র অনুসন্ধান কৌশল বা অন্য কোনো অ্যালগরিদমের উপর ভিত্তি করে চিত্র অনুসন্ধান সহ ক্ষমতা প্রদান করে। যাইহোক, আপনি যদি রিভার্স ইমেজ সার্চের উপর ভিত্তি করে REST API ভিত্তিক প্রোগ্রাম্যাটিক সমাধান পেতে আগ্রহী হন, তাহলে Aspose.Imaging Cloud হল সুনির্দিষ্ট পছন্দ। এর শক্তিশালী সার্চ ইঞ্জিন ডেভেলপারদের যেকোনো প্ল্যাটফর্মে নির্বিঘ্নে তাদের অ্যাপ্লিকেশনে বিপরীত চিত্র অনুসন্ধান বৈশিষ্ট্য যুক্ত করতে সহায়তা করে। আপনি এমনকি অন্যান্য ছবির মধ্যে ছবির সদৃশ খুঁজে পেতে ইমেজ তুলনা অপারেশন শুরু করতে পারেন। এই ক্রিয়াকলাপের ফলস্বরূপ, আপনি নিম্নলিখিত শর্তাবলী অনুসারে সর্বাধিক অনুরূপ চিত্রগুলির তালিকা পাবেন:
- সাদৃশ্য ডিগ্রী
- মিলের ন্যূনতম থ্রেশহোল্ড
- তুলনার অ্যালগরিদম
এখন জাভা অ্যাপ্লিকেশানের মধ্যে একই ধরনের ইমেজ প্রসেসিং এবং ডুপ্লিকেট পিকচার ফাইন্ডার ক্ষমতার জন্য, আমাদের Aspose.Imaging Cloud SDK for Java ব্যবহার করতে হবে কারণ এটি ক্লাউড API-এর চারপাশে একটি মোড়ক। সুতরাং পরবর্তী ধাপ হল maven বিল্ড টাইপ প্রজেক্টের pom.xml-এ নিম্নলিখিত তথ্যগুলি অন্তর্ভুক্ত করে জাভা প্রকল্পে এর রেফারেন্স যোগ করা।
<repositories>
<repository>
<id>aspose-cloud</id>
<name>artifact.aspose-cloud-releases</name>
<url>https://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 এ একটি অ্যাকাউন্ট তৈরি না করে থাকেন, তাহলে আপনি একটি বৈধ ইমেল ঠিকানার মাধ্যমে একটি বিনামূল্যের ট্রায়ালের জন্য সাইন আপ করতে পারেন৷ এখন নতুন তৈরি অ্যাকাউন্ট ব্যবহার করে লগইন করুন এবং [ক্লাউড ড্যাশবোর্ড] এ ক্লায়েন্ট আইডি এবং ক্লায়েন্ট সিক্রেট দেখুন/তৈরি করুন 5। নিম্নলিখিত বিভাগে প্রমাণীকরণের উদ্দেশ্যে এই বিশদ বিবরণ প্রয়োজন।
জাভা ব্যবহার করে ডুপ্লিকেট ছবি খুঁজুন
বিপরীত চিত্র অনুসন্ধান একটি কৌশল যা আপনাকে আপনার নমুনা চিত্রের উপর ভিত্তি করে দৃশ্যমান অনুরূপ চিত্রগুলি অনুসন্ধান করতে সহায়তা করে। এই বৈশিষ্ট্যটির জন্য সবচেয়ে সাধারণ ব্যবহারের ক্ষেত্রে নীচে দেওয়া হল:
ডুপ্লিকেট ইমেজ সার্চ করুন এবং ডুপ্লিকেট মুছে ফেলুন কন্টেন্ট অনুরূপ ছবি জন্য অনুসন্ধান অনুপযুক্ত বিষয়বস্তু অনুসন্ধান করুন ডিজিটালি স্বাক্ষরিত ছবি অনুসন্ধান করুন
আমাদের API বর্তমানে বিষয়বস্তু-ভিত্তিক চিত্র অনুসন্ধান, ডুপ্লিকেট চিত্র অনুসন্ধান, কাস্টম নিবন্ধিত ট্যাগ দ্বারা চিত্র অনুসন্ধান, চিত্র তুলনা এবং সাদৃশ্য সনাক্তকরণ এবং চিত্র বৈশিষ্ট্য নিষ্কাশন অপারেশন সমর্থন করে। এখন এই বিভাগে, আমরা রিভার্স ইমেজ টেকনিক ব্যবহার করে ডুপ্লিকেট ইমেজ খুঁজে বের করার বিষয়ে বিস্তারিত আলোচনা করতে যাচ্ছি। এখন এই প্রয়োজনীয়তা পূরণ করার জন্য, আমরা বৈশিষ্ট্য সনাক্তকরণের জন্য AKAZE অ্যালগরিদম এবং উদাহরণে বৈশিষ্ট্যের মিলের জন্য RandomBinaryTree অ্যালগরিদম ব্যবহার করি। ডুপ্লিকেট ছবিগুলি খুঁজে পেতে আমরা এই পদক্ষেপগুলি অনুসরণ করব:
- ক্লাউড স্টোরেজে ছবি আপলোড করুন
- অনুসন্ধান প্রসঙ্গ তৈরি করুন
- ছবি বৈশিষ্ট্য এক্সট্র্যাক্ট
- ডুপ্লিকেট ইমেজ খুঁজুন
ক্লাউড স্টোরেজে ছবি আপলোড করুন
স্থানীয় ড্রাইভ থেকে ক্লাউড স্টোরেজে ইমেজ ফাইল আপলোড করতে অনুগ্রহ করে নিম্নলিখিত কোড স্নিপেটটি ব্যবহার করুন৷
- প্রথমত, ClientID এবং Client প্রদান করার সময় ImagingApi-এর একটি অবজেক্ট তৈরি করুন
- দ্বিতীয়ত, নির্দিষ্ট ডিরেক্টরি থেকে সমস্ত ইমেজ ফাইল পড়ুন
- শুধুমাত্র ইমেজ ফাইল ফিল্টার করুন এবং ফিল্টার করা তালিকায় যোগ করুন
- UploadFileRequest অবজেক্টকে আর্গুমেন্ট হিসাবে গ্রহণ করার সময় আপলোডফাইল(…) পদ্ধতি ব্যবহার করে ক্লাউড স্টোরেজে চিত্রগুলি আপলোড করুন
// https://dashboard.aspose.cloud/ থেকে ClientID এবং ClientSecret পান
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);
//এক্সটেনশনটি সমর্থিত ইমেজ এক্সটেনশনে তালিকাভুক্ত কিনা তা পরীক্ষা করুন
if (supportedImageExtensions.stream().anyMatch(fileExtension::equalsIgnoreCase)) {
//ফিল্টার করা তালিকায় ছবিটি যোগ করুন
acceptedImages.add(file);
// প্রথম পাওয়ারপয়েন্ট উপস্থাপনা লোড করুন
byte[] bytes = Files.readAllBytes(file.toPath());
// ফাইল আপলোড অনুরোধ তৈরি করুন
UploadFileRequest request = new UploadFileRequest(acceptedImages.get(counter).getName(),bytes,null);
// ক্লাউড স্টোরেজে ইমেজ ফাইল আপলোড করুন
imageApi.uploadFile(request);
// ফাইল কাউন্টার বাড়ান
counter+=1;
}
}
অনুসন্ধান প্রসঙ্গ তৈরি করুন
- প্রথমে আমাদের অ্যাকাজে হিসাবে বৈশিষ্ট্য সনাক্তকরণ অ্যালগরিদম নির্দিষ্ট করতে হবে
- দ্বিতীয়ত, এলোমেলো বাইনারি ট্রি হিসাবে বৈশিষ্ট্য ম্যাচিংয়ের জন্য অ্যালগরিদম নির্দিষ্ট করুন
- তৃতীয়ত, 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 কমান্ড ব্যবহার করে ফটো ডুপ্লিকেট খুঁজুন
এই বিভাগে, আমরা কমান্ড লাইন টার্মিনালে REST API অ্যাক্সেস করতে cURL কমান্ড ব্যবহার করার সুবিধা নিতে যাচ্ছি। এখন একটি পূর্বপ্রস্তুতি হিসাবে, নিম্নলিখিত কমান্ডটি কার্যকর করার সময় আমাদের প্রথমে একটি 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"
এই পদক্ষেপটি আশা করে যে সমস্ত ছবি ক্লাউড স্টোরেজে আপলোড করা হয়েছে এবং এখন আমাদের 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>"
উপসংহার
এই নিবন্ধে, আমরা জাভা ক্লাউড SDK ব্যবহার করে ডুপ্লিকেট চিত্রগুলি কীভাবে সন্ধান করতে হয় সে সম্পর্কে বিস্তারিত শিখেছি। একইভাবে, আমরা শিখেছি কিভাবে cURL কমান্ড একটি ডুপ্লিকেট ছবি সন্ধানকারী হিসাবে কাজ করতে পারে। আপনি যদি ব্রাউজারের মধ্যে এই APIগুলি ব্যবহার করে দেখতে চান, অনুগ্রহ করে swagger API রেফারেন্স ব্যবহার করার চেষ্টা করুন। একইভাবে, আমরা এই API দ্বারা অফার করা অন্যান্য উত্তেজনাপূর্ণ বৈশিষ্ট্যগুলি শিখতে প্রোডাক্ট ডকুমেন্টেশন অন্বেষণ করার সুপারিশ করছি। এছাড়াও, দয়া করে মনে রাখবেন যে আমাদের সমস্ত ক্লাউড SDK গুলি MIT লাইসেন্সের অধীনে প্রকাশিত হয়েছে, তাই আপনি GitHub থেকে সম্পূর্ণ সোর্স কোড ডাউনলোড করার কথা বিবেচনা করতে পারেন এবং আপনার প্রয়োজনীয়তা অনুযায়ী এটি পরিবর্তন করতে পারেন। কোনো সমস্যার ক্ষেত্রে, আপনি বিনামূল্যে প্রোডাক্ট সাপোর্ট ফোরাম এর মাধ্যমে দ্রুত সমাধানের জন্য আমাদের সাথে যোগাযোগ করতে পারেন।
সম্পরকিত প্রবন্ধ
সম্পর্কে আরও জানতে অনুগ্রহ করে নিম্নলিখিত লিঙ্কগুলিতে যান: