clear all;
%clc;
indi=load('dat.mat');
indianbe=indi.I0;
indianbe=reshape(indianbe,145,145,186);
%indianbe=indianbe(1:50,1:50,:);
[a,b,c]=size(indianbe);
%add noise and calculate the noise image's SNR
for i=1:c
indian(:,:,i)=imnoise(indianbe(:,:,i),'gaussian',0,0.05);
end
S=SNR(indianbe,indian);
fprintf('The Noise Image SNR is %d.\n',S);
indianbet=tensor(indianbe);
indiant=tensor(indian);
indian1= tensor_unfolding(indian,1); %mode 1 unfolding
indian2= tensor_unfolding(indian,2); %mode 2 unfolding
indian3= tensor_unfolding(indian,3); %mode 3 unfolding
%K1=MWFAIC(indian1);%estimate rank of mode n
K1=80;
%K2=MWFAIC(indian2);
K2=80;
%K3=MWFAIC(indian3);
K3=50;
k=0;
thr=1e-9;
H10=eye(a);H20=eye(b);H30=eye(c);
Rt0=indiant; %tensor
Rt1=ttm(indiant,{H10,H20,H30},[1:3]);
%dif=norm(Rt1-indianbet);
while k<1 %dif>thr && k<1000
Rt11=ttm(indiant,{H20,H30},[2,3]);
Rt11d=double(Rt11);
Rt11= tensor_unfolding(Rt11d,1); %mode 1 unfolding
R1=indian1;
%R10=R1*(kron(H20,H30))';
H11=MWFilter(Rt11,R1,K1,a);
Rt12=ttm(indiant,{H11,H30},[1,3]);
Rt12d=double(Rt12);
Rt12= tensor_unfolding(Rt12d,2); %mode 2 unfolding
R2=indian2;
%R20=R2*(kron(H11,H30))';
H21=MWFilter(Rt12,R2,K2,b);
Rt13=ttm(indiant,{H11,H21},[1,2]);
Rt13d=double(Rt13);
Rt13= tensor_unfolding(Rt13d,3); %mode 3 unfolding
R3=indian3;
%R30=R3*(kron(H11,H21))';
H31=MWFilter(Rt13,R3,K3,c);
% H10=H11; %update
% H20=H21;
% H30=H31;
% Rt0=Rt1;
k=k+1;
Rt1=ttm(indiant,{H11,H21,H31},[1:3]);
%dif=norm(Rt1-Rt0);
%fprintf('Iteration No.%d processing done. dif= %f \n',k, dif);
Rt1d=double(Rt1);
S=SNR(indianbe,Rt1d);
fprintf('The Image denoised SNR is %d.\n',S);
end
fprintf('All iteration done, now get the filtered signal tensor.\n');
estX=ttm(indiant,{H11,H21,H31},[1:3]);
filtX=(double(estX));
S=SNR(indianbe,filtX);
fprintf('The Image denoised SNR is %d.\n',S);
%70, 86 and 136
filtX_rgb(:,:,1)=filtX(:,:,70);
filtX_rgb(:,:,2)=filtX(:,:,86);
filtX_rgb(:,:,3)=filtX(:,:,136);
figure, imshow(uint8(filtX_rgb*255));
filtX_rgb(:,:,1)=indian(:,:,70);
filtX_rgb(:,:,2)=indian(:,:,86);
filtX_rgb(:,:,3)=indian(:,:,136);
figure, imshow(uint8(filtX_rgb*255));
filtX_rgb(:,:,1)=indianbe(:,:,70);
filtX_rgb(:,:,2)=indianbe(:,:,86);
filtX_rgb(:,:,3)=indianbe(:,:,136);
figure, imshow(uint8(filtX_rgb*255));
matlab食物素材去噪代码(毕业设计或大作业个人学习参考代码)
57 浏览量
2023-08-12
23:19:09
上传
评论 1
收藏 6.29MB ZIP 举报
全球学习中心
- 粉丝: 3
- 资源: 90
最新资源
- 批量word文件内容替换工具1.0 (批量实现多个 Word 文档文件文字替换利器).exe
- Cartoon GUI Pack 1.2.zip
- 【数据集和代码】基于加速度传感器的步态识别行人分类实验(可做步态识别)
- 我分享个魔兽内存修改器
- Python毕业设计基于Django的网易云数据分析可视化大屏系统的设计与实现+使用说明+全部资料(优秀项目).zip
- mp3 idv2,idv1,frame分析工具
- Python毕业设计基于Django的网易云数据分析可视化大屏系统的设计与实现+使用说明+全部资料(高分项目).zip
- 人工兔优化算法ARO MATLAB源码, 应用案例为函数极值求解以及优化svm进行分类,代码注释详细,可结合自身需求进行应用
- 人才网站设计-asp.net+sql-(系统源码)
- asp.net+sql人才网站设计-含系统源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈