【图像处理】基于matlab图像正交变换【含Matlab源码 1010期】
2021/6/18 20:58:31
本文主要是介绍【图像处理】基于matlab图像正交变换【含Matlab源码 1010期】,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、简介
二、源代码
clear,clc,close all; Image=rgb2gray(imread('cameraman.jpg')); subplot(121),imshow(Image),title('原图像'); [ca,ch,cv,cd]=dwt2(Image,'db4'); %用db4小波对图像进行一级小波分解 result=idwt2(ca*0,ch,cv,cd,'db4')/256; Image=imread('desert.jpg');%读取图像 grayI=rgb2gray(Image);%将彩色图像灰度化 DFTI1=fft2(grayI); ADFTI1=abs(DFTI1); top=max(ADFTI1(:)); bottom=min(ADFTI1(:)); subplot(131),imshow(Image),title('原图');%显示原图像 subplot(132),imshow(ADFTI1),title('原频谱图');%显示傅里叶变换频谱图 subplot(133),imshow(ADFTI2),title('移位频谱图');%显示傅里叶变换频谱图 % imwrite(ADFTI1,'dftpinpu2_1.jpg'); % imwrite(ADFTI2,'dftpinpu2_2.jpg'); clear,clc,close all; fmt={'*.jpg','JPEG image(*.jpg)';'*.*','All Files(*.*)'}; [FileName,FilePath]=uigetfile(fmt,'导入数据','face*.jpg','MultiSelect','on'); if ~isequal([FileName,FilePath],[0,0]) FileFullName=strcat(FilePath,FileName); else return; end N=length(FileFullName); for k=1:N Image=im2double(rgb2gray(imread(FileFullName{k}))); X(:,k) = Image(:); % 把图像放在矩阵x的第k列 end [h,w,c]=size(Image); % %----------- 计算每幅训练图像的与平均脸的差值 -------% averagex = mean(X')'; %计算均值图像 X=X-averagex; % 求中心化图像向量 %-----奇异值分解方法计算协方差矩阵的特征值和特征向量----% R = X'*X; %协方差矩阵为x*x’,这里用奇异值分解 [Q,D] = eig(R); %V为以特征向量为列的矩阵,D为特征值组成的对角阵 [D_sort,index] = sort(diag(D),'descend'); D=D(index,index); Q = Q(:,index); P = X*Q*(abs(D))^-0.5; total = 0.0; count = sum(D_sort); for r =1:N total = total + D_sort(r); if total/count > 0.95 %当差异信息比例达到85%时退出循环 break; end end %-------------测试样本在新空间上投影后的坐标-----------% KLCoefR = P'*X; figure; plot(KLCoefR(1,:),KLCoefR(2,:),'ko'),title('K-L变换行压缩'); xlabel('第一主成分得分');ylabel('第二主成分得分'); Y= P(:,1:2)*KLCoefR(1:2,:)+averagex; %重建 for j=1:N outImage=reshape(Y(:,j),h,w); % top=max(outImage(:)); % bottom=min(outImage(:)); % outImage=(outImage-bottom)/(top-bottom); % str=strcat('feaface12_',num2str(j),'.jpg'); % imwrite(outImage,str); figure,imshow(outImage,[]); end Z= P(:,1:r)*KLCoefR(1:r,:)+averagex; %重建 for j=1:N outImage=reshape(Z(:,j),h,w); % top=max(outImage(:)); % bottom=min(outImage(:)); % outImage=(outImage-bottom)/(top-bottom); % str=strcat('feaface1r_',num2str(j),'.jpg'); % imwrite(outImage,str); figure,imshow(outImage,[]); for j =1:N outImage=reshape(KLCoefC(:,j),h,w); % top=max(outImage(:)); % bottom=min(outImage(:)); % outImage=(outImage-bottom)/(top-bottom); % str=strcat('feaface',num2str(j),'.jpg'); % imwrite(outImage,str); figure,imshow(outImage,[]); end % %
三、运行结果
四、备注
版本:2014a
完整代码或代写加1564658423
这篇关于【图像处理】基于matlab图像正交变换【含Matlab源码 1010期】的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-27数据结构与算法面试题详解及练习
- 2024-12-27网络请求面试题详解与实战
- 2024-12-27数据结构和算法面试真题详解与实战教程
- 2024-12-27网络请求面试真题解析与实战教程
- 2024-12-27数据结构和算法大厂面试真题详解与实战指南
- 2024-12-27TS大厂面试真题解析与应对策略
- 2024-12-27TS大厂面试真题详解与解析
- 2024-12-27网站安全入门:如何识别和修复漏洞
- 2024-12-27SQL注入基础教程
- 2024-12-27初学者指南:理解和修复跨域漏洞