Descripción de características de textura y realización de Matlab

La característica de textura describe las propiedades de la superficie de la escena correspondiente a la imagen o al área de la imagen, y es un valor calculado en la imagen, que cuantifica las características del cambio de área. El análisis de texturas es el proceso de extraer características de texturas a través de ciertas técnicas de procesamiento de imágenes para obtener descripciones cuantitativas o cualitativas de texturas.

Método estadístico de diferencia de grises

El histograma gris del área de textura se usa como característica de textura, y el histograma de imagen se usa para extraer varias características, como el valor medio, la varianza, la energía y la entropía para describir la textura. Sea (x,y) un punto en la imagen, y la diferencia de grises entre este punto y el punto (x+▲x,y+▲y) con sólo una pequeña distancia de él es: g ▲ (x,y) = g (x , y ) - g(x+▲x,y+▲y),
donde g se denomina diferencia de escala de grises. Suponiendo que todos los valores posibles de la diferencia de nivel de gris son m niveles, deje que el punto (x, y) se mueva en toda la pantalla y cuente la cantidad de veces que g ▲ toma cada valor, y así el histograma de g ▲ puede hacerse. Del histograma, podemos obtener el valor de probabilidad p(k) de g ▲. Cuando la frecuencia p(k) del menor valor de interpolación k es mayor, refleja la rugosidad de la textura. Cuando el histograma es plano, la textura es mas fino
Funciones de textura relacionadas:
inserte la descripción de la imagen aquí

Cuando p(k) es relativamente plano, la entropía es mayor y la energía es menor, y cuanto más p(k) se distribuye cerca del origen, menor es la media.
Calcule las características estadísticas del método de la diferencia de grises:

>> I = imread('E:\persional\matlab\images\house.tif');
>> A = double(I);
>> [m,n] = size(A);
>> B = A;
>> C = zeros(m,n);%新建全零矩阵
>> for i=1:m-1
		for j=1:n-1
			B(i,j) = A(i+1,j+1);
			C(i,j) = abs(round(A(i,j)-B(i,j)));
		end
	end
>> h = imhist(mat2gray(C))/(m*n);%归一化灰度直方图
>> mean=0;con=0;ent=0;%均值,对比度和熵初始值为0
>> for i=1:256
		mean = mean+(i*h(i))/256;
		con = con+i*i*h(i);
		if(h(i)>0)
			ent = ent-h(i)*log2(h(i));
		end
	end
>> subplot(121),imshow(I),title('原图');
>> subplot(122),imshow(C),title('灰度差分');
>> mean

mean =

    0.0382

>> con

con =

  327.4435

>> ent

ent =

    3.6956

inserte la descripción de la imagen aquí

método de función de autocorrelación

La textura se usa a menudo para describir la rugosidad. Una medida de textura con un valor pequeño indica una textura fina, y una medida con un valor grande indica una textura gruesa. Una función de autocorrelación generalmente se usa como detección de textura. Sea la imagen f(x, y), y la definición de la función de autocorrelación es:
inserte la descripción de la imagen aquí
Generalmente, la correlación del área de textura gruesa con una desviación dada (ε, η) es mayor que la de la textura fina, por lo que la forma rugosa de la textura debe ser consistente con la expansión de la función de autocorrelación Proporcional.

Defina una función personalizada:

function [epsilon,eta,C] = zxcor(f,D,m,n)
for epsilon=1:D
    for eta=1:D
        temp = 0;
        fp = 0;
        for x=1:m
            for y=1:n
                if(x+epsilon-1)>m | (y+eta-1)>n
                    f1 = 0;
                else 
                    f1 = f(x,y)*f(x+epsilon-1,y+eta-1);
                end
                temp=f1+temp;
                fp = f(x,y)*f(x,y)+fp;
            end
        end
        f2(epsilon,eta)=temp;
        f3(epsilon,eta)=fp;
        C(epsilon,eta)=f2(epsilon,eta)/f3(epsilon,eta);
    end
end
epsilon=0:(D-1);%ε方向取值范围
eta=0:(D-1);%η方向取值范围

Llame a la función zxcor():

>> I = imread('E:\persional\matlab\images\0.jpg');
>> J = imread("E:\persional\matlab\images\2.jpg");
>> subplot(121),imshow(I),title('图一');
>> subplot(122),imshow(J),title('图二');
>> f1 = rgb2gray(I);
>> f2 = rgb2gray(J);
>> f1 = double(f1);
>> f2 = double(f2);
>> [m1,n1] = size(f1);
>> [m2,n2] = size(f2);
>> D=20;%偏移量
>> [epsilon1,eta1,C1] = zxcor(f1,D,m1,n1);
>> [epsilon2,eta2,C2] = zxcor(f2,D,m2,n2);
>> subplot(121),mesh(epsilon1,eta1,C1);
>> xlabel('epsilon');ylabel('eta');
>> subplot(122),mesh(epsilon2,eta2,C2);
>> xlabel('epsilon');ylabel('eta');

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
Con el aumento de ε y η, se puede ver que la figura 1 cambia rápidamente y su textura superficial es relativamente rugosa, mientras que la figura 2 tiende a ser estable. Se puede decir que su textura es suave. Cuanto mayor es la rugosidad de la superficie, cuanto más rápido cambia la curva, y menor es la rugosidad.La curva cambia lentamente.

matriz de co-ocurrencia de nivel de gris

Dado que la textura está formada por la aparición repetida de la distribución del nivel de gris en la posición espacial, habrá una cierta relación de nivel de gris entre los píxeles separados por una cierta distancia en el espacio de la imagen, es decir, la característica espacial del nivel de gris. en la imagen La matriz de coocurrencia de nivel de gris es un método común para describir la textura mediante el estudio de las características de correlación espacial del nivel de gris.
El histograma de nivel de gris es el resultado estadístico de que un solo píxel en la imagen tenga un cierto nivel de gris, mientras que la matriz de co-ocurrencia de nivel de gris se obtiene contando las condiciones de que dos píxeles con una cierta distancia en la imagen tengan un cierto nivel de gris respectivamente. La matriz de co-ocurrencia del nivel de gris de una imagen puede reflejar la información completa sobre la dirección, el intervalo adyacente y el rango de variación del nivel de gris de la imagen, y es la base para analizar los patrones locales de la imagen y sus reglas de disposición.
Sea f(x, y) una imagen digital bidimensional, y S un conjunto de pares de píxeles con continuidad espacial específica en la región objetivo R, entonces la matriz de co-ocurrencia de nivel de gris P que satisface una cierta relación espacial es: La molécula del lado derecho del signo igual tiene
inserte la descripción de la imagen aquí
cierta relación espacial y el número de pares de píxeles cuyos valores de gris son g1 y g2 respectivamente, y el denominador es el número total de pares de píxeles (# representa el número). La P obtenida de esta manera se normaliza. Si se toman diferentes distancias y ángulos, se pueden obtener diferentes matrices de co-ocurrencia de niveles de gris. Durante el proceso de solución, la distancia seleccionada permanece sin cambios y se usan diferentes ángulos, como 0° , matriz de coocurrencia en escala de grises de 45°, 90° y 135°.
Si la imagen se compone de bloques de píxeles con valores de gris similares, los elementos diagonales de la matriz de coocurrencia de niveles de gris tendrán valores relativamente grandes; si los valores de píxeles de la imagen cambian localmente, los elementos fuera de la diagonal tendrán valores relativamente grandes. valores valor.

energía:

La suma de los cuadrados de los valores de los elementos de la matriz de coocurrencia del nivel de gris refleja la uniformidad de la distribución del nivel de gris de la imagen y el grosor de la textura. Si todos los valores de la matriz de co-ocurrencia de nivel de gris son iguales, la energía es menor; por el contrario, si algunos valores son grandes y otros pequeños, el valor de la energía es grande. Cuando los elementos en la matriz de co-ocurrencia se distribuyen intensamente, el valor de energía es grande en este momento, y el valor de energía grande representa un patrón de textura con transformación uniforme y regular.
inserte la descripción de la imagen aquí

Contraste:

Refleja la claridad de la imagen y la profundidad del surco de textura. Cuanto más profundo sea el surco de textura, mayor será el contraste y más claro el efecto visual. Por el contrario, cuanto menor sea el contraste, más borroso será el efecto visual. La diferencia de escala de grises, es decir, cuantos más pares de píxeles con alto contraste, mayor es el valor. Cuanto mayor sea el valor del elemento alejado de la diagonal en la matriz de coocurrencia de nivel de gris, mayor será el contraste.
inserte la descripción de la imagen aquí

Relacionado:

Mide la similitud de los elementos de la matriz de escala de grises espacial en la fila y la columna, por lo que el valor de correlación refleja la correlación de escala de grises local en la imagen. Cuando los valores de los elementos de la matriz son uniformemente iguales, el valor de la correlación es grande; si los valores de los elementos de la matriz difieren mucho, el valor de la correlación es pequeño. Si hay una textura de dirección horizontal en la imagen, el valor de correlación de la matriz de dirección horizontal es mayor que el de las matrices restantes.
inserte la descripción de la imagen aquí

entropía:

La medida de la cantidad de información que tiene una imagen, la información de textura también es información que pertenece a la imagen y es una medida de aleatoriedad. Cuando todos los elementos en la matriz de co-ocurrencia tienen la mayor aleatoriedad y todos los valores en el espacio co -matriz de ocurrencia son casi iguales, mayor es la entropia. Representa el grado de falta de uniformidad o complejidad de la textura de la imagen.
inserte la descripción de la imagen aquí

Igualdad:

Refleja la rugosidad de la textura, la uniformidad de la textura gruesa es mayor y la uniformidad de la textura fina es menor.
inserte la descripción de la imagen aquí

función de matriz de co-ocurrencia graycomatrix()

'GrayLimits': un vector de dos elementos, que representa el rango de mapeo de escala de grises en la imagen, si se establece en [ ], la matriz de co-ocurrencia de escala de grises usará los valores máximo y mínimo de la imagen I; 'NumLevels': el escala de grises en la
imagen El rango normalizado determina el tamaño de la matriz de co-ocurrencia de niveles de gris;
'Offset': una matriz de enteros P×2;
D: la distancia entre el píxel actual y sus vecinos, 0°: [0 D] , 45°: [-DD], 90°: [-D 0] y 135°: [-D -D].

>> I = imread('E:\persional\matlab\images\house.tif');
>> glcm = graycomatrix(I,'Offset',[0 2]);
>> glcm

Los resultados muestran que el valor de los elementos diagonales de la matriz de coocurrencia de escala de grises de la imagen original es mayor, lo que indica que hay más bloques de píxeles con valores de escala de grises similares en la imagen.
inserte la descripción de la imagen aquí

Función de estadísticas de características de textura garycoprops():

stats = graycoprops(glcm,{'contrast','correlation','energy','homogeneity'}), el valor de retorno es la propiedad estática de la matriz de co-ocurrencia gris; glcm: matriz de co-ocurrencia gris; 'Contraste ': contraste
,
devuelve el contraste de brillo entre un píxel en toda la imagen y sus píxeles adyacentes, el rango de valores es [0 ~ (número de fila de glcm-1) 2 ];
'Correlación': correlación, cómo el píxel en la imagen está relacionada con sus píxeles adyacentes El valor métrico, el rango de valores es [-1,1];
'Energía': energía, la suma cuadrada de píxeles, el rango de valores [0,1];
'Homogemeidad': homogeneidad , la distribución de elementos en glcm a la diagonal La estrechez de la línea, el rango de valores es [0,1], y la homogeneidad de la matriz diagonal es 1.

Estadísticas de características de textura de imágenes de teledetección basadas en matriz de co-ocurrencia:

>> I = imread('map1.tif');
>> HSV = rgb2hsv(I);
>> Hgray = rgb2gray(HSV);
>> glcms1 = graycomatrix(Hgray,'numlevels',64,'offset',[0 1;-1 1;-1 0;-1 -1]);%纹理特征统计值(对比度、相关性、熵、平稳度二阶矩)
>> stars = graycoprops(glcms1,{
    
    'contrast','correlation','energy','homogeneity'});
>> ga1 = glcms1(:,:,1);%0°
>> ga2 = glcms1(:,:,2);%45°
>> ga3 = glcms1(:,:,3);%90°
>> ga4 = glcms1(:,:,4);%145°
>> energya1 = 0;energya2 = 0;energya3=0;energya4=0;
>> for i=1:64
for j=1:64
energya1 = energya1+sum(ga1(i,j)^2);
energya2 = energya2+sum(ga2(i,j)^2);
energya3 = energya3+sum(ga3(i,j)^2);
energya4 = energya4+sum(ga4(i,j)^2);
j=j+1;
end
i=i+1;
end
>> s1=0;s2=0;s3=0;s4=0;s5=0;%对比度
>>> for m=1:4
s1 = stars.Contrast(1,m)+s1;
end
>>  for m=1:4
s2 = stars.Correlation(1,m)+s2;%相关性
end
>>  for m=1:4
s3 = stars.Energy(1,m)+s3;%熵
end
>>  for m=1:4
s4 = stars.Homogeneity(1,m)+s4;%平稳度
end
>> s5 = 0.000001*(energya1+energya2+energya3+energya4);%二阶矩

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
En la figura se puede ver que el contraste de las montañas es mucho mayor que el de las ciudades y los tifones; la correlación entre las montañas y las ciudades es cercana, y la correlación de los tifones es negativa; el valor de entropía de los tifones es más cercano al de las ciudades que las montañas; el contraste y los parámetros de estacionariedad de las montañas y los pueblos tienen cierta La brecha se puede utilizar para distinguir las montañas de los océanos.

Supongo que te gusta

Origin blog.csdn.net/weixin_56260304/article/details/127885485
Recomendado
Clasificación