MATLAB小函数:展示灰度图像数据集的部分样例

MATLAB小函数:展示灰度图像数据集的部分样例

作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/

更多请看:MATLAB作图

    给定一个.mat文件的灰度图像数据集,用MATLAB程序展示该图像数据集的一部分样例,每一类都展示相同数目的样例图,并将它们汇总成一幅图并保存图片。数据来源:Face databases (Yale, ORL, PIE and YaleB)

1. MATLAB程序

Image_integration.m

function Image_samples=Image_integration(data, real_label, N_samples)
% Gray image integration
% This code only applies to square matrices
% Input: 
% data: dataset. N*Dim
% real_label: GroundTruth. N*1
% N_samples: number of selected samples
% Output:
% Image_samples:Integrated image
% Author: kailugaji https://www.cnblogs.com/kailugaji/
[~, Dim]=size(data);
[~, b]=sort(real_label);
data=data(b, :); 
K=length(unique(real_label)); % number of cluster
[~, ID]=unique(real_label);
ID=ID-1;
image_10=cell(N_samples, K);
temp=cell(N_samples, K);
Image_samples=[];
for i=1:N_samples
    for j=1:K
        temp{i, j}=reshape(data(ID(j)+i, :), sqrt(Dim), sqrt(Dim)); % you can change its size
        image_10{i, j}=[image_10{i, j}, temp{i, j}];
    end
    Image_samples=[Image_samples; image_10{i, :}];
end

demo.m

clear
clc
% Author: kailugaji https://www.cnblogs.com/kailugaji/
interval=7; % The size of the middle space
N_samples=10; % number of selected samples
load('ORL_64x64.mat')
Image_samples=Image_integration(fea, gnd, N_samples);
A=mat2gray(Image_samples);
figure(1)
imshow(A, 'Border','tight'); 
print(gcf,'-r1000','-djpeg','My_ORL.jpg');

load('Yale_64x64.mat')
Image_samples=Image_integration(fea, gnd, N_samples);
B=mat2gray(Image_samples);
figure(1)
imshow(B, 'Border','tight'); 
print(gcf,'-r1000','-djpeg','My_Yale.jpg');

A_=imresize(A,[500, 2000]);
B_=imresize(B,[500, 750]);
C=[A_, 255.*ones(size(A_(:, 1:interval, :))), B_];
figure(3)
imshow(C, 'Border','tight'); 
print(gcf,'-r1000','-djpeg','My_Image.jpg');

2. 结果

ORL数据集部分样例图

MATLAB小函数:展示灰度图像数据集的部分样例_第1张图片

Yale数据集部分样例图

MATLAB小函数:展示灰度图像数据集的部分样例_第2张图片

两个数据集合并在一起的样例示意图

MATLAB小函数:展示灰度图像数据集的部分样例_第3张图片

你可能感兴趣的:(MATLAB小函数:展示灰度图像数据集的部分样例)