[MatLab] Ricavare istogramma desiderato da un immagine

Messaggioda Miriamast » 24/03/2017, 17:50

Buona sera,

per una data immagine, dovrei ricavarne un istogramma su tutti i 255 livelli di grigio in cui il livello minimo stia a 0, quello massimo a 255 e che tra minimo e massimo il tutto sia scalato linearmente ovvero l'istogramma finale dovrà essere simile al seguente:
Immagine

Spero che qualcuno possa aiutarmi.
Miriamast
Starting Member
Starting Member
 
Messaggio: 1 di 20
Iscritto il: 22/04/2015, 15:36

Re: [MatLab] Ricavare istogramma desiderato da un immagine

Messaggioda apatriarca » 24/03/2017, 21:05

Che difficoltà incontri?
apatriarca
Moderatore
Moderatore
 
Messaggio: 4572 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Re: [MatLab] Ricavare istogramma desiderato da un immagine

Messaggioda Miriamast » 25/03/2017, 09:18

apatriarca ha scritto:Che difficoltà incontri?


Non so come procedere, lei come farebbe?
Miriamast
Starting Member
Starting Member
 
Messaggio: 2 di 20
Iscritto il: 22/04/2015, 15:36

Re: [MatLab] Ricavare istogramma desiderato da un immagine

Messaggioda apatriarca » 25/03/2017, 21:36

Esiste la funzione histogram che ti permette di fare tutto in modo automatico (ma che suppongo tu non possa usare?). In tal caso si tratta di fare un ciclo su tutti i pixel e contare le occorrenze in un array di 256 elementi. A quel punto devi fare semplicemente il grafico di tale array.
apatriarca
Moderatore
Moderatore
 
Messaggio: 4574 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Re: [MatLab] Ricavare istogramma desiderato da un immagine

Messaggioda Miriamast » 26/03/2017, 12:00

apatriarca ha scritto:Esiste la funzione histogram che ti permette di fare tutto in modo automatico (ma che suppongo tu non possa usare?). In tal caso si tratta di fare un ciclo su tutti i pixel e contare le occorrenze in un array di 256 elementi. A quel punto devi fare semplicemente il grafico di tale array.


Grazie, si, posso usare anche la funzione histogram ma non ho capito il suo suggerimento.

L'obiettivo finale è quello di rendere più scura un immagine che all'inizio si presenta con questo istogramma
Immagine

Finora, da vari aiuti in rete, sono riuscita ad ottenere un immagine il cui istogramma ha il massimo dell’immagine a 255 e il minimo dell’immagine a 0, non so però come scalare il tutto linearmente tra il minimo e il massimo
Immagine

Lei per rendere un immagine più scura con matalb cosa farebbe? Io ho già usato il comando imadjust(Im, stretchlim(Im), []) ed eseguito l'equalizzazione ma senza nessun risultato accettabile.
Miriamast
Starting Member
Starting Member
 
Messaggio: 4 di 20
Iscritto il: 22/04/2015, 15:36

Re: [MatLab] Ricavare istogramma desiderato da un immagine

Messaggioda apatriarca » 26/03/2017, 13:39

Scusa ma non avevo capito che cosa volevi esattamente ottenere. E ancora adesso ho in effetti diversi dubbi. Parli di rendere una immagine più scura, ma poi vuoi scalare il minimo e il massimo tra 0 e 255 (operazione che ha effetto sul contrasto). Se vuoi effettivamente scurire una immagine i metodi più semplici sono quelli di sottrarre un qualche valore a tutti i pixel dell'immagine oppure moltiplicare tutti i pixel per qualche valore minore di uno. Esistono poi operazioni ancora più evolute, ma non essendomi del tutto chiaro il tuo obiettivo mi limito a queste.
apatriarca
Moderatore
Moderatore
 
Messaggio: 4576 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Re: [MatLab] Ricavare istogramma desiderato da un immagine

Messaggioda Miriamast » 26/03/2017, 14:38

apatriarca ha scritto:Scusa ma non avevo capito che cosa volevi esattamente ottenere. E ancora adesso ho in effetti diversi dubbi. Parli di rendere una immagine più scura, ma poi vuoi scalare il minimo e il massimo tra 0 e 255 (operazione che ha effetto sul contrasto). Se vuoi effettivamente scurire una immagine i metodi più semplici sono quelli di sottrarre un qualche valore a tutti i pixel dell'immagine oppure moltiplicare tutti i pixel per qualche valore minore di uno. Esistono poi operazioni ancora più evolute, ma non essendomi del tutto chiaro il tuo obiettivo mi limito a queste.


In effetti anche io sto andando a tentativi per capire come procedere.

Se la traccia fosse questa:
data un immagine chiara renderla più scura, lei quale istruzioni di preciso userebbe?
Come si fa a sottrarre un qualche valore a tutti i pixel dell'immagine oppure moltiplicare tutti i pixel per qualche valore minore di uno?

Mi è stato suggerito di leggere il testo "Digital Image processing" di Woods e Gonzales, lo conosce? Ha qualche fonte in italiano per capire in che modo scurire un immagine con istruzioni matlab?

Grazie dell'aiuto, sto leggendo molta teoria ma ho ancora le idee confuse soprattutto su quali istruzioni usare.
Miriamast
Starting Member
Starting Member
 
Messaggio: 5 di 20
Iscritto il: 22/04/2015, 15:36

Re: [MatLab] Ricavare istogramma desiderato da un immagine

Messaggioda apatriarca » 26/03/2017, 14:44

Una immagine è semplicemente una matrice di pixel. Nel caso di una immagine in scala di grigi si tratta insomma semplicemente di una matrice in cui ogni elemento ha un valore da 0 a 255 (o da 0 a 1 - non ricordo come legge le immagini MATLAB). In ogni caso è sufficiente usare le usuali operazioni per le matrici. Quindi imageScaled = image .* 0.7 moltiplicherà ogni pixel per quel valore.
apatriarca
Moderatore
Moderatore
 
Messaggio: 4579 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Re: [MatLab] Ricavare istogramma desiderato da un immagine

Messaggioda Miriamast » 26/03/2017, 15:13

apatriarca ha scritto:Una immagine è semplicemente una matrice di pixel. Nel caso di una immagine in scala di grigi si tratta insomma semplicemente di una matrice in cui ogni elemento ha un valore da 0 a 255 (o da 0 a 1 - non ricordo come legge le immagini MATLAB). In ogni caso è sufficiente usare le usuali operazioni per le matrici. Quindi imageScaled = image .* 0.7 moltiplicherà ogni pixel per quel valore.


Ho appena provato ma non ottengo il risultato desiderato, la mia immagine di partenza è tipo questa
Immagine
che ha il seguente istogramma
Immagine

ed io voglio ottenere alla fine che diventi tipo questa
Immagine
con istogramma seguente
Immagine

Come fare? Questo è il mio problema.

Grazie dell'aiuto.
Miriamast
Starting Member
Starting Member
 
Messaggio: 6 di 20
Iscritto il: 22/04/2015, 15:36

Re: [MatLab] Ricavare istogramma desiderato da un immagine

Messaggioda apatriarca » 26/03/2017, 15:16

A prima vista è il risultato di qualcosa tipo image.^x per qualche valore di x. Nota che l'operazione richiede valori dell'immagine in 0-1..
apatriarca
Moderatore
Moderatore
 
Messaggio: 4580 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Prossimo

Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite