լուսանկարի կրկնօրինակ

Գտեք կրկնօրինակ պատկերներ՝ օգտագործելով Java Cloud SDK

Մեր ուղեղը իրեն նվիրում է տեսողական մշակմանը, իսկ պատկերների հանդեպ մեր սերը կապված է մեր ճանաչողության և ուշադրություն դարձնելու կարողության հետ: Պատկերները կարող են հեշտությամբ գրավել մեր ուշադրությունը, և շատ սարքեր, ներառյալ բջջային հեռախոսները, թվային տեսախցիկները, սկաներները և այլն, ստեղծում են մեծ քանակությամբ պատկերներ: Ավելին, պատկերներն ունեն տարբեր սեղմման ալգորիթմներ, և ռաստերային պատկերները շատ տարածված են նրանց մեջ, քանի որ դրանք ավելի քիչ պահեստային տարածք են սպառում: Սակայն, այնուամենայնիվ, ժամանակի ընթացքում մենք ի վերջո ստեղծում ենք կրկնօրինակ լուսանկարներ, ավելորդ պատկերներ և այլն: Մենք ունենք բազմաթիվ հավելվածներ, որոնք առաջարկում են կրկնօրինակ պատկերներ գտնելու հնարավորություններ, ներառյալ կրկնօրինակ նկարների որոնիչը: Եթե դուք ունեք պատկերներ պահված Google-ի լուսանկարներում, կարող եք փորձել օգտագործել google photo duplicate finder-ը, տեղադրել կրկնօրինակ լուսանկարների որոնիչ windows 10 կամ կրկնօրինակ լուսանկարների որոնիչ mac (կախված ձեր օպերացիոն համակարգից): Այնուամենայնիվ, այս հոդվածում մենք պատրաստվում ենք լույս սփռել, թե ինչպես զարգացնել հիանալի կրկնօրինակ լուսանկարների որոնիչ՝ օգտագործելով REST API, որը կարող է օգտագործվել ցանկացած հարթակում:

Պատկերների մշակման API

Պատկերների մշակման համար հասանելի են մի շարք հավելվածներ, որոնք առաջարկում են պատկերային ֆայլեր ստեղծելու, խմբագրելու և շահարկելու հնարավորություններ: Նրանք նաև տրամադրում են հնարավորություններ, ներառյալ պատկերի որոնումը, որը հիմնված է հակադարձ պատկերների որոնման տեխնիկայի կամ որևէ այլ ալգորիթմի վրա: Այնուամենայնիվ, եթե դուք հետաքրքրված եք REST API-ի վրա հիմնված ծրագրային լուծում ունենալով, որը հիմնված է հակադարձ պատկերների որոնման վրա, ապա Aspose.Imaging Cloud-ը որոշակի ընտրություն է: Նրա հզոր որոնողական համակարգն օգնում է ծրագրավորողներին անխափան կերպով ավելացնել պատկերների հետադարձ որոնման գործառույթներ իրենց հավելվածում ցանկացած հարթակում: Դուք նույնիսկ կարող եք սկսել պատկերների համեմատման գործողությունը մի քանի այլ պատկերների մեջ լուսանկարների կրկնօրինակը գտնելու համար: Այս գործողության արդյունքում դուք ստանում եք ամենանման պատկերների ցանկը հետևյալ պայմանների համաձայն.

  • Նմանության աստիճանը
  • Նմանության նվազագույն շեմը
  • Համեմատության ալգորիթմ

Այժմ Java հավելվածում պատկերների մշակման և կրկնօրինակ պատկերների որոնման հնարավորություններ ունենալու համար մենք պետք է օգտագործենք Aspose.Imaging Cloud SDK for Java, քանի որ այն Cloud API-ի շուրջ փաթաթված է: Այսպիսով, հաջորդ քայլը դրա հղումն ավելացնելն է java նախագծում՝ ներառելով հետևյալ տեղեկատվությունը pom.xml 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>

Այժմ, եթե դուք չեք ստեղծել հաշիվ Aspose Cloud Dashboard-ով, կարող եք գրանցվել անվճար փորձարկման համար վավեր էլ. հասցեի միջոցով: Այժմ մուտք գործեք՝ օգտագործելով նորաստեղծ հաշիվը և փնտրեք/ստեղծեք Հաճախորդի ID-ն և Հաճախորդի գաղտնիքը Cloud Dashboard-ում: Այս մանրամասները պահանջվում են նույնականացման նպատակով հետևյալ բաժիններում:

Գտեք կրկնօրինակ պատկերներ Java-ի միջոցով

Հակադարձ պատկերների որոնումը տեխնիկա է, որն օգնում է ձեզ որոնել տեսողականորեն նման պատկերներ՝ հիմնվելով ձեր նմուշի պատկերի վրա: Ստորև բերված են այս հատկանիշի օգտագործման ամենատարածված դեպքերը.

Որոնեք կրկնօրինակ պատկեր և հեռացրեք կրկնօրինակները Որոնեք նմանատիպ պատկերների բովանդակություն Որոնել ոչ պատշաճ բովանդակություն Որոնեք թվային ստորագրված պատկերներ

Մեր API-ն ներկայումս աջակցում է բովանդակության վրա հիմնված պատկերների որոնում, կրկնօրինակ պատկերների որոնում, պատկերների որոնում ըստ հատուկ գրանցված պիտակների, պատկերների համեմատության և նմանության հայտնաբերման և Պատկերի առանձնահատկությունների արդյունահանման գործողություններին: Այժմ այս բաժնում մենք պատրաստվում ենք քննարկել մանրամասները, թե ինչպես գտնել կրկնօրինակ պատկերներ՝ օգտագործելով հակադարձ պատկերի տեխնիկան: Այժմ այս պահանջը կատարելու համար մենք օգտագործում ենք AKAZE ալգորիթմը հատկանիշների հայտնաբերման համար և RandomBinaryTree ալգորիթմը՝ օրինակում հատկանիշի համապատասխանության համար: Կրկնօրինակ պատկերները գտնելու համար մենք կհետևենք հետևյալ քայլերին.

  • Վերբեռնեք պատկերներ Cloud Storage-ում
  • Ստեղծեք որոնման համատեքստ
  • Արտահանել պատկերի առանձնահատկությունները
  • Գտեք կրկնօրինակ պատկերներ

Վերբեռնեք պատկերներ Cloud Storage-ում

Խնդրում ենք օգտագործել հետևյալ կոդի հատվածը՝ պատկերային ֆայլերը տեղական սկավառակից ամպային պահեստ վերբեռնելու համար

  • Նախ, ստեղծեք 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);
    //Ստուգեք, արդյոք ընդլայնումը նշված է supportedImageExtensions-ում
    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
  • Երկրորդ, նշեք ալգորիթմը, որը համընկնում է հատկանիշի հետ որպես պատահականԲինարի ծառ
  • Երրորդ, ստեղծեք Image Search Request՝ օգտագործելով 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: Նմանապես, մենք խորհուրդ ենք տալիս ուսումնասիրել Product documentation՝ իմանալու համար այս API-ի կողմից առաջարկվող այլ հետաքրքիր գործառույթները: Նաև, խնդրում ենք նկատի ունենալ, որ մեր բոլոր Cloud SDK-ները հրապարակված են MIT լիցենզիայի ներքո, այնպես որ կարող եք ներբեռնել ամբողջական աղբյուր կոդը GitHub-ից և փոփոխել այն՝ ըստ ձեր պահանջների: Խնդիրների դեպքում կարող եք դիմել մեզ՝ արագ լուծման համար անվճար ապրանքի աջակցման ֆորումի միջոցով:

Առնչվող հոդվածներ

Խնդրում ենք այցելել հետևյալ հղումները՝ ավելին իմանալու համար.