Алгоритм интерполяции ближайших соседей в MATLAB

Опубликовано: 20 Февраля, 2023

Интерполяция ближайшего соседа — это тип интерполяции. Этот метод просто определяет «ближайший» соседний пиксель и предполагает значение его интенсивности, в отличие от вычисления среднего значения с использованием некоторых взвешивающих критериев или получения промежуточного значения на основе сложных правил.

Интерполяция:

Метод добавления новых точек данных в диапазоне набора известных точек данных называется интерполяцией. Интерполяцию можно использовать для заполнения пробелов в данных, сглаживания данных, прогнозирования и многого другого. Методы для точек данных на сетке и разбросанных точек данных - это два подмножества интерполяции в MATLAB.

Процесс интерполяции включает в себя определение неизвестных значений, лежащих между известными точками данных. Для любых географически связанных точек данных, таких как уровень шума, осадки, высота над уровнем моря и т. д., он в основном используется для прогнозирования неизвестных значений.

Алгоритм бинарного поиска дополнен алгоритмом интерполяционного поиска.

Метод интерполяции ближайшего соседа:

Самый простой метод — интерполяция округления (также известная как интерполяция ближайшего соседа), которая просто находит ближайшее значение данных в целочисленной позиции путем округления ожидаемого значения позиции.

Алгоритм ближайшего соседа:

Алгоритм k-ближайшего соседа, также называемый KNN или k-NN, представляет собой классификатор обучения с учителем, который использует близость для классификации или прогнозирования группировки одной точки данных. Хотя его можно применять к задачам классификации или регрессии, его обычно используют в качестве алгоритма классификации, поскольку он основан на идее о том, что похожие точки можно найти близко друг к другу.

Значения пикселей, присутствующие во входном векторе или матрице, повторно дискретизируются с использованием этого метода, который является самым простым. Интерполяция изображений в MATLAB выполняется с помощью функции imresize.

Синтаксис:

knn = nearest neighbor(I)

knn = nearest neighbor(I,Name,Value)

[knn,SI] = nearest neighbor(___)

  1. knn- Из изображения I алгоритм ближайшего соседа генерирует интерполяцию ближайшего соседа.
  2. knn — в зависимости от значений необязательных аргументов пары «имя-значение» ближайший сосед (I, имя, значение) возвращает одну или несколько матриц алгоритма ближайшего соседа.
  3. [knn,SI] - Масштабированное изображение SI, используемое для вычисления матрицы алгоритма ближайшего соседа, возвращается методом интерполяции ближайшего соседа.

Пример 1:

Matlab




% MATLAB CODE for READ AN INPUT IMAGE
X=imread("image.tif");
  
% SET THE SIZE OF THE RESAMPLE
Col = 256;
Row = 256;
  
% contrast the new size with the previous size.
rtR = Row/size(X,1);
rtC = Col/size(X,2);
  
%CARRY OUT THE INTERPOLATED POSITIONS
IR = cell
         ([1:(size(X,1)*rtR)]./(rtR));
IC = cell
         ([1:(size(X,2)*rtC)]./(rtC));
  
%WISE ROW INTERPOLATION
Y = X(IR);
  
%WISE INTERPOLATION BY COLUMN
Y = Y(IC);
figure,subplot(101),imshow(X);
title("BEFORE INTERPOLATION"); 
axis([0,256,0,256]);axis on;
subplot(111),imshow(Y);
title("AFTER INTERPOLATION");  
axis([0,256,0,256]);axis on;

Выход:

ПЕРЕД ИНТЕРПОЛЯЦИЕЙ

ПОСЛЕ ИНТЕРПОЛЯЦИИ

Пример 2:

Matlab




% MATLAB CODE FOR READ AN INPUT IMAGE
X=imread("GEEKSFORGEEKS.tif");
  
% SET THE SIZE OF THE RESAMPLE
Col = 256;
Row = 256;
  
% Contrast the new size with the previous size.
rtR = Row/size(X,1);
rtC = Col/size(X,2);
  
% CARRY OUT THE INTERPOLATED POSITIONS
IR = cell
         ([1:(size(X,1)*rtR)]./(rtR));
IC = cell
         ([1:(size(X,2)*rtC)]./(rtC));
  
% WISE ROW INTERPOLATION
Y = X(IR);
  
% WISE INTERPOLATION BY COLUMN
Y = Y(IC);
figure,subplot(101),imshow(X);
title("BEFORE INTERPOLATION"); 
axis([0,256,0,256]);axis on;
subplot(111),imshow(Y);
title("AFTER INTERPOLATION");  
axis([0,256,0,256]);axis on;

Выход:

ПЕРЕД ИНТЕРПОЛЯЦИЕЙ

ПОСЛЕ ИНТЕРПОЛЯЦИИ