Buscar..


Imagen básica de E / S

>> img = imread('football.jpg');

Use imread para leer archivos de imagen en una matriz en MATLAB.
Una vez que haya imread una imagen, se almacena como una matriz ND en la memoria:

>> size(img)
ans =
 256   320     3

La imagen 'football.jpg' tiene 256 filas y 320 columnas y tiene 3 canales de color: rojo, verde y azul.

Ahora puedes reflejarlo:

>> mirrored = img(:, end:-1:1, :);  %// like mirroring any ND-array in Matlab

Y finalmente, escríbalo como una imagen usando imwrite :

>> imwrite(mirrored, 'mirrored_football.jpg');

Recuperar imágenes de internet

Mientras tenga una conexión a Internet, puede leer imágenes desde un hipervínculo.

I=imread('https://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-logo.png');

Filtrado utilizando un FFT 2D

Al igual que para las señales 1D, es posible filtrar imágenes aplicando una transformación de Fourier, multiplicando con un filtro en el dominio de la frecuencia y transformando nuevamente en el dominio del espacio. Aquí es cómo puede aplicar filtros de paso alto o bajo a una imagen con Matlab:

Deje que la image sea ​​la original, sin filtrar. A continuación se muestra cómo calcular su FFT 2D:

ft = fftshift(fft2(image));

Ahora, para excluir una parte del espectro, es necesario establecer sus valores de píxel en 0. La frecuencia espacial contenida en la imagen original se asigna desde el centro a los bordes (después de usar fftshift ). Para excluir las bajas frecuencias, estableceremos el área circular central en 0.

Aquí se explica cómo generar una máscara binaria en forma de disco con radio D mediante la función incorporada:

[x y ~] = size(ft);
D = 20;
mask = fspecial('disk', D) == 0;
mask = imresize(padarray(mask, [floor((x/2)-D) floor((y/2)-D)], 1, 'both'), [x y]);

El enmascaramiento de la imagen del dominio de la frecuencia se puede hacer multiplicando la FFT puntualmente con la máscara binaria obtenida anteriormente:

masked_ft = ft .* mask;

Ahora, vamos a calcular la FFT inversa:

filtered_image = ifft2(ifftshift(masked_ft), 'symmetric');

Las frecuencias altas de una imagen son los bordes afilados, por lo que este filtro de paso alto se puede usar para enfocar imágenes.

Filtrado de imágenes

Digamos que tiene una imagen rgbImg , por ejemplo, lea usando imread .

>> rgbImg = imread('pears.png');
>> figure, imshow(rgbImg), title('Original Image')

introduzca la descripción de la imagen aquí

Use fspecial para crear un filtro 2D:

>> h = fspecial('disk', 7);
>> figure, imshow(h, []), title('Filter')

introduzca la descripción de la imagen aquí

Use imfilter para aplicar el filtro en la imagen:

>> filteredRgbImg = imfilter(rgbImg, h);
>> figure, imshow(filteredRgbImg), title('Filtered Image')

introduzca la descripción de la imagen aquí

Medición de las propiedades de las regiones conectadas

Comenzando con una imagen binaria, bwImg , que contiene varios objetos conectados.

>> bwImg = imread('blobs.png');
>> figure, imshow(bwImg), title('Binary Image')

introduzca la descripción de la imagen aquí

Para medir las propiedades (por ejemplo, área, centroide, etc.) de cada objeto en la imagen, use regionprops :

>> stats = regionprops(bwImg, 'Area', 'Centroid');

stats es una matriz de estructura que contiene una estructura para cada objeto en la imagen. Acceder a una propiedad medida de un objeto es simple. Por ejemplo, para mostrar el área del primer objeto, simplemente,

>> stats(1).Area

ans =

    35

Visualice los centroides del objeto superponiéndolos en la imagen original.

>> figure, imshow(bwImg), title('Binary Image With Centroids Overlaid')
>> hold on
>> for i = 1:size(stats)
scatter(stats(i).Centroid(1), stats(i).Centroid(2), 'filled');
end

introduzca la descripción de la imagen aquí



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow