Aiuto con due esercizi di MATLAB/elaborazione img HELP

di il
3 risposte

Aiuto con due esercizi di MATLAB/elaborazione img HELP

1:

Given a 24bpp Image, write a MATLAB code to compute the "negative image". The solution must reach the result by processing pixel by pixel.

2:

Given an RGB image, write a MATLAB code that for each color channel every pixel is modified by substracting to its intensity the mean intensity value of the channel.

Mi sto impratichendo e mi dareste veramente una mano, non riesco a trovare degli esercizi già svolti
Grazie 1000

3 Risposte

  • Re: Aiuto con due esercizi di MATLAB/elaborazione img HELP

    Dovresti pubblicare il codice che hai scritto fino a questo punto in modo che si possa formulare una risposta.

    Quale è il problema specifico che hai incontrato?
  • Re: Aiuto con due esercizi di MATLAB/elaborazione img HELP

    ask_raf ha scritto:


    Dovresti pubblicare il codice che hai scritto fino a questo punto in modo che si possa formulare una risposta.

    Quale è il problema specifico che hai incontrato?
    Allora, per il primo esercizio ho dedotto due soluzioni, solo che la dicitura "pixel by pixel" mi fa pensare a un ciclo for, quindi:
    la prima:

    >> a = imread('immagine.png');
    >> d(:,:,3) = 255 - a(:,:,3);
    >> d(:,:,2) = 255 - a(:,:,2);
    >> d(:,:,1) = 255 - a(:,:,1);
    >> imshow([a,d])

    ______________________________________________________________

    la seconda:

    function pic_negative = ait_imgneg(pic)

    [x,y,z] = size(pic);
    if(z==1)
    ;
    else
    pic = rgb2gray(pic);
    end

    max_gray = max(max(pic));
    max_gray = im2double(max_gray);
    pic = im2double(pic);

    for i = 1:x
    for j = 1:y
    pic_negative(i,j)= max_gray - pic(i,j);
    end
    end
    end

    ____________________________________

    Per il secondo esercizio non so proprio dove sbattere la testa e non so dove prenderlo
    Tolto il fatto che non ho ancora ben capito se scrivere da riga di comando o dall'editor, uso Octave.

    Se avete suggerimenti sono tutti ben accetti. Grazie!
  • Re: Aiuto con due esercizi di MATLAB/elaborazione img HELP

    Per quanto riguarda il primo esercizio, la prima soluzione mi sembra corretta; la seconda, sinceramente non ho capito cosa intendi fare.

    Se si tratta di scrivere esplicitamente dei loop, invece di usare le caratteristiche di indexing di MatLab (come nella prima soluzione), si possono scrivere tre cicli for annidati che scorrano le rige e le colonne delle tre matrici, qualcosa del tipo:
    
    for i=1:size(original,1)
       for j=1:size(original,2)
          for k=1:size(original,3)
             updated(i,j,k)=255-original(i,j,k);
          end
       end
    end
    
    Per quanto riguarda il secondo esercizio (se l'ho compreso correttamente):
    [*] l'immagine RGB letta da imread viene caricata in una matrice (n x m x 3).
    [*] data la matrice "original" letta con imread, per calcolare la media dei tre canali pupi provare con:
    
    mean(mean(original(:,:,1)))
    ...
    ...
    
    La matrice della nuova immagine dovrebbe quindi essere:
    
    updated(:,:,1)=original(:,:,1)-mean(mean(original(:,:,1)));
    updated(:,:,2)=original(:,:,2)-mean(mean(original(:,:,2)));
    updated(:,:,3)=original(:,:,1)-mean(mean(original(:,:,3)));
    
    Se si vogliono utilizzare dei loop, si può procedere come nel caso precedente.
Devi accedere o registrarti per scrivere nel forum
3 risposte