Código fuente de software cuantitativo de código abierto
% Trabajo de procesador de imágenes digitales
Este programa puede escalar archivos de imágenes en color en formato JPG y realizar ecualización de histogramas.
%
%Archivo de entrada: Imagen PicSample.jpg a procesar.
%Archivo de salida: imagen gris PicSampleGray.bmp.
% PicEqual.bmp imagen ecualizada
%
%Descripción de la ventana de gráficos de salida
%Imagen en color a procesar en la imagen número 1
% Imagen gris del gráfico N° 2
% Histograma del gráfico N° 3
% Histograma ecualizado del gráfico N° 4
% Figura 5 Curva de cambio de escala de grises
% Imagen de ecualización gráfica No. 6
% 1. El nombre de la imagen procesada debe ser PicSample.jpg.
% 2. Cada vez que se ejecuta el programa, se borrará el espacio de trabajo.
% Author; No Building Lord
Limpiar todo
% 1. Preprocesamiento de imágenes, leer imágenes en color y atenuarlas.
PS = im read(' pic sample . jpg '); %Leer archivo de imagen en color JPG
Imshow(PS)%El número de imagen mostrado es 1.
Title("Imagen JPG en color importada")
imwrite(rgb2gray(PS), ' picsamplegray . BMP '); Escala de grises la imagen en color y guárdala
PS = RGB 2 gris(PS); % de datos grises se almacenan en la matriz.
En la imagen, imshow(PS)% muestra una imagen gris, que también es la imagen de muestra número 2 antes de la ecualización.
Título ("Imagen gris")
% 2, dibujar histograma
[m, n] = tamaño (PS% parámetros de tamaño de imagen medidos <); /p>
GP = zero (1, 256); % Cree previamente un vector para almacenar probabilidades en escala de grises.
Para k=0:255
GP(k+1)= length(find(PS = = k))/(m * n % calcula cada nivel de gris); La probabilidad de nivel se almacena en la ubicación correspondiente en GP.
Fin
Gráfico, barra(0:255, GP, 'g')% traza el histograma Figura 3.
Título("Histograma de la imagen original")
Xlabel('Valor de gris')
Ylabel("Probabilidad de ocurrencia")
% 3, ecualización de histograma
s 1 = cero (1, 256);
Porque i=1:256
Para j=1 :i
s 1(I)= GP(j)+s 1(I % riesgo calculado
Fin
Fin
S2); = round(s 1 * 256); % Mueve Sk a un nivel de gris similar.
Porque i=1:256
GPeq(I)= sum(GP(find(S2 = = I)); % calcula la probabilidad de cada nivel de gris existente. p>
Fin
La figura, bar(0:255,GPeq,' b')% muestra el histograma balanceado Figura 4.
Título("Histograma después de la ecualización")
Xlabel('Valor de gris')
Ylabel("Probabilidad de ocurrencia")
En la figura, plot(0:255, S2, "r")% muestra la curva de cambio de escala de grises de la Figura 5
Leyenda ("Curva de cambio de escala de grises")
Xlabel( "Escala de grises de la imagen original")
Ylabel("Escala de grises después de la ecualización")
% 4, Ecualización de imagen
PA = PS
Porque i=0:255
PA(find(PS = = I))= S2(I+1); % normalizará la escala de grises de cada píxel. El valor asignado a este píxel.
Fin
Figura, imshow(PA)% muestra la imagen equilibrada Figura 6.
Título("imagen ecualizada")
imwrite(PA, 'pice qual . BMP');