您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 图形图像 > matlab PCA图像融合
%PCAclearup=imread('high.jpg');%读图像low=imread('low.jpg');figure(1)imshow(up);%读RGB数值title('PCA-RGB表示的高分辨率图像');figure(2)imshow(low)title('PCA-RGB表示的低分辨率图像');up=double(up);low_R=double(low(:,:,1));low_G=double(low(:,:,2));low_B=double(low(:,:,3));[M,N,color]=size(up);low_Mx=[000]';fori=1:Mforj=1:Nlow_S=[low_R(i,j),low_G(i,j),low_B(i,j)]';low_Mx=low_Mx+low_S;endendlow_Mx=low_Mx/(M*N);%计算低分辨率图片的三维列向量的平均值low_Cx=0;fori=1:Mforj=1:Nlow_S=[low_R(i,j),low_G(i,j),low_B(i,j)]';low_Cx=low_Cx+low_S*low_S';endendlow_Cx=low_Cx/(M*N)-low_Mx*low_Mx';%运用公式cov(x,y)=E(xy)-ExEy计算协方差矩陈[low_A,low_latent]=eigs(low_Cx);%协方差矩陈的特征向量组成的矩陈----PCA变换的系数矩陈,特征值.fori=1:Mforj=1:Nlow_X=[low_R(i,j),low_G(i,j),low_B(i,j)]';low_Y=low_A'*low_X;low_Y=low_Y';low_R(i,j)=low_Y(1);%低分辨率图片的第1主分量low_G(i,j)=low_Y(2);%低分辨率图片的第2主分量low_B(i,j)=low_Y(3);%低分辨率图片的第3主分量endendim=uint8(low_R);%匹配一个图像的直方图y=imhist(im);y=y/sum(y);%归一化,使函数符合概率分布的sum(y)==1这样一个规律plot(y);%待匹配的直方图G=[];%函数的累积直方图fori=1:256G=[Gsum(y(1:i))];endimg=imread('high.jpg');[mn]=size(img);hist=imhist(img);%待处理图像的直方图p=hist/(m*n);s=[];%待处理图像的累积直方图fori=1:256s=[ssum(p(1:i))];endfori=1:256tmp{i}=G-s(i);tmp{i}=abs(tmp{i});%因为要找距离最近的点,所以取绝对值[aindex(i)]=min(tmp{i});%找到两个累积直方图距离最近的点endimgn=zeros(m,n);fori=1:mforj=1:nimgn(i,j)=index(img(i,j)+1)-1;%由原图的灰度通过索引映射到新的灰度endendimgn=uint8(imgn);imgn=double(imgn);fori=1:Mforj=1:Nlow_Y=[imgn(i,j),low_G(i,j),low_B(i,j)]';%将低分辨率的全色图像的第一主成分替换成高分辨率的图片low_X=low_A*low_Y;low_X=low_X';r(i,j)=low_X(1);g(i,j)=low_X(2);b(i,j)=low_X(3);endendRGB(:,:,1)=r;RGB(:,:,2)=g;RGB(:,:,3)=b;figure(3)imshow(uint8(round(RGB)))title('PCA-RGB表示的转化图像');
本文标题:matlab PCA图像融合
链接地址:https://www.777doc.com/doc-4358307 .html