Поиск…


Основные изображения ввода / вывода

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

Используйте imread для чтения файлов изображений в матрицу в MATLAB.
Как только вы imread изображение, оно хранится в памяти как ND-массив:

>> size(img)
ans =
 256   320     3

Изображение 'football.jpg' имеет 256 строк и 320 столбцов и имеет 3 цветовых канала: красный, зеленый и синий.

Теперь вы можете отразить это:

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

И, наконец, напишите это как изображение, используя imwrite :

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

Извлечение изображений из Интернета

Пока у вас есть подключение к Интернету, вы можете читать изображения из гиперссылки

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

Фильтрация с использованием 2D FFT

Как и для сигналов 1D, можно фильтровать изображения, применяя преобразование Фурье, умножая его на фильтр в частотной области и преобразовывая обратно в пространственную область. Вот как вы можете применять фильтры с высоким или низким пропусканием к изображению с помощью Matlab:

Пусть image будет оригинальным, нефильтрованное изображение, вот как вычислить его 2D FFT:

ft = fftshift(fft2(image));

Теперь, чтобы исключить часть спектра, нужно установить его значения пикселей равными 0. Пространственная частота, содержащаяся в исходном изображении, отображается от центра к краям (после использования fftshift ). Чтобы исключить низкие частоты, мы установим центральную круговую область на 0.

Вот как создать двоичную маску в форме диска с радиусом D используя встроенную функцию:

[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]);

Маскирование изображения частотной области может быть выполнено путем умножения точки БПФ на двоичную маску, полученную выше:

masked_ft = ft .* mask;

Теперь давайте вычислим обратный БПФ:

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

Высокими частотами изображения являются острые края, поэтому этот фильтр верхних частот может использоваться для резкости изображений.

Фильтрация изображений

Допустим, у вас есть изображение rgbImg , например, чтение с использованием imread .

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

введите описание изображения здесь

Используйте fspecial для создания 2D-фильтра:

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

введите описание изображения здесь

Используйте imfilter чтобы применить фильтр к изображению:

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

введите описание изображения здесь

Измерение свойств подключенных регионов

Начиная с бинарного изображения, bwImg , который содержит несколько связанных объектов.

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

введите описание изображения здесь

Чтобы измерить свойства (например, область, центр и т. Д.) regionprops объекта на изображении, используйте regionprops :

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

stats - это массив структур, который содержит структуру для каждого объекта изображения. Доступ к измеренному свойству объекта прост. Например, чтобы отобразить область первого объекта, просто,

>> stats(1).Area

ans =

    35

Визуализируйте центроиды объектов, наложив их на исходное изображение.

>> 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

введите описание изображения здесь



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow