資源簡介
基于主成分分析的圖像融合matlab代碼及實驗圖像

代碼片段和文件信息
%PCA
clear
up=imread(‘high.jpg‘);?????????%讀圖像
low=imread(‘low.jpg‘);
figure(1)??????????????????????????
imshow(up);?????????????????????????????????%讀RGB數(shù)值
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));
[MNcolor]=size(up);
low_Mx=[0?0?0]‘;
for?i?=?1?:?M
????for?j?=?1?:?N
?????????low_S?=?[low_R(ij)low_G(ij)low_B(ij)]‘;
?????????low_Mx?=?low_Mx?+?low_S;
????end
end???????????????????
low_Mx?=?low_Mx?/?(M*N);%?計算低分辨率圖片的三維列向量的平均值
low_Cx=0;
for?i?=?1?:?M
????for?j?=?1?:?N
?????????low_S?=?[low_R(ij)low_G(ij)low_B(ij)]‘;
?????????low_Cx?=?low_Cx?+?low_S*low_S‘;
????end
end?
low_Cx?=?low_Cx?/?(M?*?N)-?low_Mx*low_Mx‘;??%?運用公式cov(xy)=E(xy)-ExEy?計算協(xié)方差矩陳????
[low_Alow_latent]?=?eigs(low_Cx);%?協(xié)方差矩陳的特征向量組成的矩陳----PCA變換的系數(shù)矩陳特征值.
for?i?=?1?:?M
????for?j?=?1?:?N???????
???????low_X?=?[low_R(ij)low_G(ij)low_B(ij)]‘;
???????low_Y?=?low_A‘*low_X;
???????low_Y=low_Y‘;
???????low_R(ij)?=?low_Y(1);??????????????????????????%?低分辨率圖片的第1主分量
???????low_G(ij)?=?low_Y(2);??????????????????????????%?低分辨率圖片的第2主分量
???????low_B(ij)?=?low_Y(3);??????????????????????????%?低分辨率圖片的第3主分量
???end
end
im=uint8(low_R);??%匹配一個圖像的直方圖
y=imhist(im);
y=y/sum(y);?????????%歸一化,使函數(shù)符合概率分布的sum(y)==1這樣一個規(guī)律
plot(y);????????????%待匹配的直方圖
G=[];???????????????%函數(shù)的累積直方圖
for?i=1:256
???G=[G?sum(y(1:i))];?
end
img=imread(‘high.jpg‘);
[m?n]=size(img);
hist=imhist(img);???????%待處理圖像的直方圖
p=hist/(m*n);???????????
s=[];???????????????????%待處理圖像的累積直方圖
for?i=1:256
????s=[s?sum(p(1:i))];
end
for?i=1:256
????tmp{i}=G-s(i);
????tmp{i}=abs(tmp{i});?????????%因為要找距離最近的點,所以取絕對值
????[a?index(i)]=min(tmp{i});???%找到兩個累積直方圖距離最近的點
end
imgn=zeros(mn);
for?i=1:m
???for?j=1:n
??????imgn(ij)=index(img(ij)+1)-1;????%由原圖的灰度通過索引映射到新的灰度
???end
end
imgn=uint8(imgn);
imgn=double(imgn);
for?i?=?1?:?M
????for?j?=?1?:?N?
???????low_Y?=?[imgn(ij)low_G(ij)low_B(ij)]‘;%將低分辨率的全色圖像的第一主成分替換成高分辨率的圖片
???????low_X?=?low_A*low_Y;
???????low_X=low_X‘;
???????r(ij)?=?low_X(1);
???????g(ij)?=?low_X(2);
???????b(ij)?=?low_X(3);
???end
end
RGB(::1)=r;
RGB(::2)=g;
RGB(::3)=b;
figure(3)
imshow(uint8(round(RGB)))
title(‘PCA-RGB表示的轉(zhuǎn)化圖像‘);
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????39964??2013-10-08?17:41??PCA圖像融合\high.jpg
?????文件??????33350??2013-10-08?17:41??PCA圖像融合\low.jpg
?????文件???????2599??2014-05-26?18:00??PCA圖像融合\PCA.m
?????目錄??????????0??2014-06-19?00:36??PCA圖像融合
-----------?---------??----------?-----??----
????????????????75913????????????????????4
評論
共有 條評論