首页 > 解决方案 > 在 MATLAB 中使用彩色图像的四元数加权平均滤波器

问题描述

在这里我想输入彩色图像,然后提取 rgb 颜色空间并将这些 rgb 颜色像素划分为 3×3 子矩阵,然后我还想通过同时使用强度和色度差异来计算像素距离。然后我想通过使用这个距离来获得欧几里得距离作为权重。最后,我想通过使用上面找到的权重来获得四元数加权平均滤波器(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为完整图像时,它没有给我正确的图像。请问有什么帮助吗?

标签: matlabquaternionsweighted-average

解决方案


推荐阅读