No tengo una función de entropía en Matlab. Estoy buscando el código fuente en línea. Si es así, publíquelo.
ENTROPÍA Entropía de la imagen de intensidad.
E = ENTROPÍA(I) Devuelve E, uno representa ENTROPÍA(I) Devuelve E, uno representa la entropía de la imagen de intensidad valor escalar
. La entropía es una medida estadística de aleatoriedad que se puede utilizar
para describir la textura de una imagen de entrada. La entropía se define como -sum(p.*log2(p)) donde p contiene los recuentos de histogramas devueltos por IMHIST.
ENTROPY utiliza 2 contenedores para matrices lógicas y 256 contenedores para
matrices uint8, double o uint16 en IMHIST. Si I tiene más de dos dimensiones,
se tratará como una imagen de intensidad multidimensional en lugar de una imagen RGB.
Apoyo de clase
----- --------
Debo ser lógico, uint8, uint16 o double, y debe ser real, no nulo,
y no disperso. E es doble.
Notas
-----
ENTROPY convertirá cualquier clase que no sea una clase lógica a uint8 para histogramas p>
cuenta los cálculos para que los valores de píxeles sean discretos y correspondan directamente
a un valor bin.
Ejemplo
-------
I = imread('circuit.tif'); >
E = entropía(I)
Véase también IMHIST, ENTROPYFILT.
Copyright 1993-2007 The MathWorks, Inc.
$Revisión: 1.1.8.4 $ $Fecha.2007/06/04 21:08:49 $ $
Referencias:
González, R.C., R.E Woods, S.L. , "Procesamiento de imágenes digitales
usando MATLAB", Capítulo 11.
I = ParseInputs(varargin{:});
if ~islogic(I )
I = im2uint8(I);
end
Calcular el recuento del histograma
p = imhist(I (:) );
Eliminar cero entradas en p
p(p==0) = [];
Normalizar p, sea suma(p) uno.
p = p ./ numerel(I
E = -sum(p.*log2(p)); p>función I = ParseInputs(varargin)
iptchecknargin(1, 1, nargin, mfilename);
iptcheckinput(varargin{1}, {'uint8', 'uint16', 'doble', 'lógico'}, ....
{'real', 'nonempty', 'nonsparse'}, mfilename, 'I', 1);
I = varargin{1};