Implementare filtro mediano

di il
16 risposte

16 Risposte - Pagina 2

  • Re: Implementare filtro mediano

    Come posso escludere i bordi dal mio calcolo? Inoltre per quanto riguarda il valore del pixel mediano a questo punto mi conviene impostare direttamente
    int index = 4
    Grazie
  • Re: Implementare filtro mediano

    Come posso escludere i bordi dal mio calcolo?
    Te l'ho detto: supponendo che tu faccia due for (con x e y) per analizzare pixel per pixel, non devi fare altro che controllare se x==0 OPPURE x==width-1 OPPURE y==0 OPPURE y==height-1; in questo caso non devi applicare il filtro.
    Se ci ragioni, i pixel sui bordi non hanno tutti gli 8 pixel adiacenti, quindi dovresti scrivere del codice aggiuntivo, solo per questi pixel, per determinare quanti pixel adiacenti ci sono.
    Ma siccome normalmente su immagini di una certa dimensione neanche te ne accorgi di un bordo di 1 pixel, puoi tranquillamente accettare che il filtro non venga applicato sui bordi.
    Quindi, se lavori solo all'interno, escludendo i bordi, sai che i pixel che tratterai hanno tutti 8 pixel adiacenti, 9 pixel da ordinare in tutto e per ottenere il mediano devi prendere il valore in posizione 4 dell'array ordinato.
    per y che va da 0 a height-1
      per x che va da 0 a widht-1
        se x==0 OPPURE x==width-1 OPPURE y==0 OPPURE y==height-1 
           outputPixels[x + y * width] = valore RGB non modificato
        altrimenti
           // determinazione degli array ordinati
           mediano = red[4] <<... + green[4] << ... + blue[4]<<...
           outputPixels[x + y * width] = mediano
    
Devi accedere o registrarti per scrivere nel forum
16 risposte