Средневзвешенный фильтр по кватернионам с использованием цветных изображений в MATLAB
Здесь я хочу ввести цветное изображение, затем извлечь цветовые пространства rgb и разделить эти цветовые пиксели rgb на подматрицы 3 на 3, а затем также вычислить расстояние в пикселях, используя различия в интенсивности и цветности одновременно. С другой стороны, я хочу получить евклидово расстояние как вес, используя это расстояние. Наконец, я хочу получить Quaternion взвешенный средний фильтр (QWAF), используя вес, который я нашел выше. Чтобы получить QWAF вот формула. QWAF=summation(wi*qi)/summation(wi)
где i
обозначает пиксель из окна фильтрации и i
начинается с 1 до 9, wi
это вес, рассчитанный выше, qi
является кватернионной формой цветного изображения. Это будет применяться для полноцветного изображения всех подматриц. Затем, наконец, я хочу получить новое обработанное изображение из QWAF и отобразить это новое цветное изображение.
I = imread('Im.png');
I=double(imresize(I,[277,277]));
d=3;
[x,y]=size(f);
m=floor(x/d);
n=floor(y/d);
m_rest=mod(x,d);
n_rest=mod(y,d);
%remove rows and columns that will not fit
new_f=f(1:(end-m_rest),1:(end-n_rest));
%create matrix with (m,n) pages
new_f=reshape(new_f,[d m d n]);
new_f=permute(new_f,[1 3 2 4]);
w1=1/(sqrt(sum(((new_f(:,:,1,:))-(new_f(:,:,5,:))) .^ 2)));% calculating euclidean distance
w2=1/(sqrt(sum(((new_f(:,:,2,:))-(new_f(:,:,5,:))) .^ 2)));
.
.
.
w90=1/(sqrt(sum(((new_f(:,:,90,:))-(new_f(:,:,86,:))) .^ 2)));
QWAF1=((new_f(:,:,1,:)).*(w1));%Quaternion calculation,Q(x,y)
QWAF2=((new_f(:,:,2,:)).*(w2));
.
.
.
QWAF9=((new_f(:,:,9,:)).*(w9));
Quat1_9=cat(9,...
QWAF1,QWAF2,QWAF3,QWAF4,QWAF5,QWAF6,QWAF7,QWAF8,QWAF9);
.
.
.
Quat_total=cat(10,QWAF1_9,QWAF10_18,QWAF19_27,QWAF28_36,QWAF37_45,QWAF46_54,QWAF55_63,QWAF64_72,QWAF73_81,QWAF82_90);
Наконец, когда я хочу отобразить Quat_total
как полное изображение, это не дает мне правильное изображение. Любая помощь, пожалуйста?