matlab - 在 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
为完整图像时,它没有给我正确的图像。请问有什么帮助吗?
解决方案
推荐阅读
- javascript - JavaScript中的字符串到整数对象散列
- node.js - 如何使用 node.js 在 Redis 中同步 mongoDB 数据库的更改
- mysql - 如何将ip地址插入mysql
- html-framework-7 - Framework7 已经初始化(React)
- qt5 - bitbake:如何恢复编译
- python-3.x - 如何知道用户是否在 wxPyhton 中更改了 AuiNotebook 的选项卡顺序?
- php - 带有准备好的语句的 mysqli_stmt_num_rows 不返回行数
- asp.net-mvc - 从特定索引实体框架的会话中删除
- .net - 无法打破 foreach 循环
- python - 用python计算价值增加的总和