Pentru a putea rula codul, te rugăm să te autentifici.

Autentifică-te
main.cpp

ID #805 · InfoMoisil 2025, clasele VII-VIII · Probleme diverse

Problema Convoluția și Procesarea Imaginilor

Dificilă · 8

Memorie: 4 MB / 2 MB

Timp: 0.5 secunde

I/O: Fișiere

Imaginați-vă că sunteți cercetători în domeniul inteligenței artificiale, care lucrează pentru a dezvolta un sistem de procesare a imaginilor. V-ați confruntat cu o problemă destul de importantă: trebuie să aplicați un filtru pe o imagine pentru a obține o imagine procesată, iar acest proces se numește convoluție.

Vă sunt oferite două tipuri de date:

  1. O imagine: aceasta este o matrice de pixeli, unde fiecare pixel este o valoare între 0 și 255, inclusiv.
  2. Un kernel (filtru): acesta este un alt tip de matrice, care va fi aplicat pe imaginea dată pentru a efectua convoluția.

Kernel-ul se aplică prin plasarea acestuia peste imagine, pixel cu pixel, și pentru fiecare poziție se fac calcule. De exemplu, pentru un pixel dat, kernel-ul va lua valoarea pixelului și valorile pixelilor din jur și va calcula o nouă valoare.

Noua valoare se calculează prin punerea kernel-ului peste o bucată de imagine (numită patch) si se calculează suma produselor elementelor care se suprapun.

Acest rezultat va determina în noua matrice un singur punct (i, j) = 36, în cazul de mai sus înlocuind valoarea 5. Acest proces se repetă pentru fiecare pixel din imagine. (Pentru o mai buna vizualizare, verificați imaginea de jos)

Cerință

Implementați un algoritm care primește o imagine și un kernel ca input și aplică convoluția. Rezultatul final trebuie să fie o imagine de aceeași dimensiune ca imaginea inițială.
Asigurați-vă că implementați corect padding-ul, astfel încât dimensiunea imaginii procesate să fie identică cu cea a imaginii inițiale.

Date de intrare

Fișierul de intrare convolutie.in va conține pe prima linie numărul natural N ce reprezintă dimensiunea imaginii (imaginea va fi o matrice de N x N).
Următoarele N linii conțin câte N pixeli separați prin câte un spațiu, ce reprezintă imaginea.
Următoarea linie va conține numărul natural M ce reprezintă dimensiunea kernel-ului (kernel-ul va fi o matrice de M x M).
Următoarele M linii vor conține câte M numere separate prin câte un spațiu, ce reprezintă kernel-ul.

Date de ieșire

Fișierul de ieșire convolutie.out va conține noua imagine de aceeași dimensiune ca imaginea originală (N x N), rezultată prin aplicarea convoluției.

Restricții și precizări

  • 7 ≤ N ≤ 250;
  • 0 ≤ valoarea unui pixel ≤ 255;
  • M poate fi egal cu 1, 3, 5, sau 7;
  • -5 ≤ număr din kernel ≤ 6;
  • Kernelul se mișcă pe imagine cu pas de 1 (fără salturi);
  • Se aplică padding (bordare cu 0) pentru a menține dimensiunea imaginii de ieșire identică cu dimensiunea imaginii de intrare.

Exemplu

convolutie.in

12
8 0 4 6 5 2 0 6 3 4 1 3
5 0 8 2 0 3 5 2 4 8 0 4
6 5 3 4 0 6 8 2 3 7 0 7
8 8 1 6 9 4 5 1 8 5 1 0
5 6 7 4 9 1 5 0 2 1 6 3
1 7 2 0 8 7 7 5 8 6 6 6
4 3 6 6 7 1 8 7 5 6 9 8
3 6 8 5 5 6 5 0 6 3 5 9
1 2 2 9 2 5 2 4 0 0 1 2
7 2 4 4 1 0 8 1 6 6 8 1
9 4 0 6 3 2 5 3 9 0 2 5
7 5 3 4 3 9 8 2 3 2 0 0
3
5 -2 1
3 2 4
-1 1 1

convolutie.out

21 43 42 38 37 27 34 25 50 25 22 13
5 93 24 42 42 61 47 23 82 40 61 14
38 74 22 67 56 43 51 69 62 25 89 5
52 75 78 64 84 48 46 85 53 44 67 -14
34 88 87 73 65 97 29 60 11 67 56 29
33 50 54 81 49 116 64 94 56 84 61 53
34 46 83 78 33 94 72 92 79 99 103 65
28 76 72 88 64 93 25 72 51 67 78 63
19 25 71 68 69 49 64 44 14 41 27 7
35 39 47 27 59 41 51 59 65 56 45 30
34 71 44 41 58 60 14 98 29 60 37 54
20 80 63 20 80 75 54 68 17 60 7 0

Explicație

S-a aplicat convoluția, conform procedeului descris mai sus.

ID #805 Autor Ghiurțu Andrei
Set InfoMoisil 2025, clasele VII-VIII Adăugată de Alexis Alexis lexington
Capitol Clasa a IX-a/Probleme avansate/Probleme diverse
Licență

© 2021 – 2025 Aspire Education Labs SRL. Toate drepturile rezervate. Așa cum este specificat și în termeni și condiții, conținutul acestei pagini este protejat de legea drepturilor de autor și este interzisă copierea sau modificarea acestuia fără acordul scris al autorilor. Încălcarea drepturilor de autor este o infracțiune și se pedepsește conform legii.

Indicații oficiale de rezolvare a problemei

Lorem ipsum, dolor sit amet consectetur adipisicing elit. Aperiam rem vel architecto dolore, nulla laboriosam atque laudantium sint commodi in molestiae excepturi dicta inventore eum, quos porro illum ratione ea! Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolorum possimus dolores, molestiae sunt repellendus voluptate qui asperiores maiores cumque, quidem nihil facere distinctio! Odit, a? Nisi nostrum quod delectus corporis?

Lorem ipsum dolor sit amet consectetur adipisicing elit Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolorum possimus dolores, molestiae sunt repellendus voluptate qui asperiores maiores cumque, quidem nihil facere distinctio! Odit, a? Nisi nostrum quod delectus corporis?

Lorem ipsum dolor sit amet consectetur adipisicing elit Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolorum possimus dolores, molestiae sunt repellendus voluptate qui asperiores maiores cumque, quidem nihil facere distinctio! Odit, a?

#include <bits/stdc++.h>

    using namespace std;

    int main() {
        int n;
        cin >> n;
        cout << n * n << endl;
        return 0;
    }

Lorem:

Subtitle

Lorem ipsum, dolor sit amet consectetur adipisicing elit. Aperiam rem vel architecto dolore, nulla laboriosam atque laudantium sint commodi in molestiae excepturi dicta inventore eum, quos porro illum ratione ea! Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolorum possimus dolores, molestiae sunt repellendus voluptate qui asperiores maiores cumque, quidem nihil facere distinctio! Odit, a? Nisi nostrum quod delectus corporis?

Lorem ipsum dolor sit amet consectetur adipisicing elit Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolorum possimus dolores, molestiae sunt repellendus voluptate qui asperiores maiores cumque, quidem nihil facere distinctio! Odit, a? Nisi nostrum quod delectus corporis?

Lorem ipsum dolor sit amet consectetur adipisicing elit Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolorum possimus dolores, molestiae sunt repellendus voluptate qui asperiores maiores cumque, quidem nihil facere distinctio! Odit, a?

Lorem:

Pentru a vizualiza indicațiile problemei, te rugăm să te autentifici.

Indicații oficiale de rezolvare a problemei

Lorem ipsum, dolor sit amet consectetur adipisicing elit. Aperiam rem vel architecto dolore, nulla laboriosam atque laudantium sint commodi in molestiae excepturi dicta inventore eum, quos porro illum ratione ea! Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolorum possimus dolores, molestiae sunt repellendus voluptate qui asperiores maiores cumque, quidem nihil facere distinctio! Odit, a? Nisi nostrum quod delectus corporis?

Lorem ipsum dolor sit amet consectetur adipisicing elit Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolorum possimus dolores, molestiae sunt repellendus voluptate qui asperiores maiores cumque, quidem nihil facere distinctio! Odit, a? Nisi nostrum quod delectus corporis?

Lorem ipsum dolor sit amet consectetur adipisicing elit Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolorum possimus dolores, molestiae sunt repellendus voluptate qui asperiores maiores cumque, quidem nihil facere distinctio! Odit, a?

#include <bits/stdc++.h>

    using namespace std;

    int main() {
        int n;
        cin >> n;
        cout << n * n << endl;
        return 0;
    }

Lorem:

Subtitle

Lorem ipsum, dolor sit amet consectetur adipisicing elit. Aperiam rem vel architecto dolore, nulla laboriosam atque laudantium sint commodi in molestiae excepturi dicta inventore eum, quos porro illum ratione ea! Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolorum possimus dolores, molestiae sunt repellendus voluptate qui asperiores maiores cumque, quidem nihil facere distinctio! Odit, a? Nisi nostrum quod delectus corporis?

Lorem ipsum dolor sit amet consectetur adipisicing elit Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolorum possimus dolores, molestiae sunt repellendus voluptate qui asperiores maiores cumque, quidem nihil facere distinctio! Odit, a? Nisi nostrum quod delectus corporis?

Lorem ipsum dolor sit amet consectetur adipisicing elit Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolorum possimus dolores, molestiae sunt repellendus voluptate qui asperiores maiores cumque, quidem nihil facere distinctio! Odit, a?

Lorem:

Pentru a vizualiza rezolvarea problemei, te rugăm să te autentifici.

Soluții trimise la problema Convoluția și Procesarea Imaginilor

Soluții trimise 0
Soluții de 100 de puncte 0
Soluții de luna aceasta La fel de multe ca luna trecută. 0 +0
Rata de succes Rata dintre numărul de persoane care au obținut 100 de puncte și numărul total de persoane care au încercat problema. N/A

Autentifică-te pentru a vedea soluțiile tale.

Autentifică-te
  • Toate soluțiile tale le găsești aici. Găsești toate detaliile evaluării mai târziu, precum punctaje și sfaturi primite.
  • Poți să editezi soluțiile tale și să le retrimiți. Reia mai târziu de unde ai rămas, pentru că poți modifica soluții și să le reevaluezi.
  • Profesorii pot să vadă soluțiile tale și să îți trimită sugestii. Astfel, îți este mai ușor să înveți informatica, primind sfaturi bune chiar de la școală.

Ultimele soluții trimise 0

1000 10 10000 10 10
1000000 1000 1000000 10000000 100
10 10000 100000 100000 1000000
100000 10000 10 100 1000000
100000 100 10 10000000 10000
10000 10000000 100000 1000 1000
10000 1000 1000000 10 1000
10 100 10 10000 100000
10 100 10 1000 1000
10000000 10000000 100 10000 100000
Tabelul se actualizează în timp real. ?? / ??

Comentarii 0

Autentifică-te pentru a putea comenta.

Autentifică-te