La ecualización del histograma es una técnica matemática para ampliar el rango dinámico del histograma. A veces, el histograma se expande en un rango corto, por ecualización se amplía el rango del histograma. En el procesamiento de imágenes digitales, el contraste de una imagen se mejora utilizando esta misma técnica.
Uso de la ecualización de histogramas:
Se utiliza para aumentar la dispersión del histograma. Si el histograma representa la imagen digital, al distribuir los valores de intensidad en un amplio rango dinámico podemos mejorar el contraste de la imagen.
Algoritmo:
- Encuentre la frecuencia de cada valor representado en el eje horizontal del histograma, es decir, la intensidad en el caso de una imagen.
- Calcule la función de densidad de probabilidad para cada valor de intensidad.
- Después de encontrar el PDF, calcule la función de densidad acumulada para la frecuencia de cada intensidad.
- El valor de CDF está en el rango de 0-1, por lo que multiplicamos todos los valores de CDF por el mayor valor de intensidad, es decir, 255.
- Redondee los valores finales a valores enteros.
Ejemplo:
Matlab
% MATLAB code for Histogram equalisation % function to return resultant % matrix and summary function [f,r]=HistEq(k,max) Freq=zeros(1,max); [x,y]=size(k); % Calculate frequency of each % intensity value. for i=1:x for j=1:y Freq(k(i,j)+1)=Freq(k(i,j)+1)+1; end end % Calculate PDF for each intensity value. PDF=zeros(1,max); Total=x*y; for i=1:max PDF(i)=Freq(i)/Total; end % Calculate the CDF for each intensity value. CDF=zeros(1,max); CDF(1)=PDF(1); for i=2:max CDF(i)=CDF(i-1)+PDF(i); end % Multiply by Maximum intensity value % and round off the result. Result=zeros(1,max); for i=1:max Result(i)=uint8(CDF(i)*(max-1)); end % Compute the Equalized image/matrix. mat=zeros(size(k)); for i=1:x for j=1:y mat(i,j)=Result(k(i,j)+1); end end f=mat; r=Result; end % Utility code here. k=[0, 1, 1, 3, 4; 7, 2, 5, 5, 7; 6, 3, 2, 1, 1; 1, 4, 4, 2, 1]; [new_matrix, summary]=HistEq(k,8);
Producción:
A continuación se muestra una imagen de 3 bits de tamaño 4×5. Calcule la imagen ecualizada del histograma.
0 | 1 | 1 | 3 | 4 |
7 | 2 | 5 | 5 | 7 |
6 | 3 | 2 | 1 | 1 |
1 | 4 | 4 | 2 | 1 |
Pasos:
- Encuentre el rango de valores de intensidad.
- Encuentra la frecuencia de cada valor de intensidad.
- Calcule la función de densidad de probabilidad para cada frecuencia.
- Calcule la función de densidad acumulada para cada frecuencia.
- Multiplique CDF con el valor de intensidad más alto posible.
- Redondee los valores obtenidos en el paso 5.
Overview of calculation: Range of intensity values = [0, 1, 2, 3, 4, 5, 6, 7] Frequency of values = [1, 6, 3, 2, 3, 2, 1, 2] total = 20 = 4*5 Calculate PDF = frequency of each intensity/Total sum of all frequencies, for each i value of intensity Calculate CDF =cumulative frequency of each intensity value = sum of all PDF value (<=i) Multiply CDF with 7. Round off the final value of intensity.
La forma tabular del cálculo se da aquí:
Rango | Frecuencia | FCD | 7 * CDF | Redondear | |
0 | 1 | 0.0500 | 0.0500 | 0.3500 | 0 |
1 | 6 | 0.3000 | 0.3500 | 2.4500 | 2 |
2 | 3 | 0.1500 | 0.5000 | 3.5000 | 4 |
3 | 2 | 0.1000 | 0.6000 | 4.2000 | 4 |
4 | 3 | 0.1500 | 0.7500 | 5.2500 | 5 |
5 | 2 | 0.1000 | 0.8500 | 5.9500 | 6 |
6 | 1 | 0.0500 | 0.9000 | 6.3000 | 6 |
7 | 2 | 0.1000 | 1.0000 | 7.0000 | 7 |
Interpretation: The pixel intensity in the image has modified. 0 intensity is replaced by 0. 1 intensity is replaced by 2. 2 intensity is replaced by 4. 3 intensity is replaced by 4. 4 intensity is replaced by 5. 5 intensity is replaced by 6. 6 intensity is replaced by 6. 7 intensity is replaced by 7.
Salida: La nueva imagen es la siguiente:
0 | 2 | 2 | 4 | 5 |
7 | 4 | 6 | 6 | 7 |
6 | 4 | 4 | 2 | 2 |
2 | 5 | 5 | 4 | 2 |
Publicación traducida automáticamente
Artículo escrito por pintusaini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA