function [ masksy ] = portfolioN_r6_diamond( pic_number,kk )
%-----------------------------------------------------------------------------------------------------%
%产生并保存图像序列,该图像序列要求第一张为全1矩阵,第二张为全0矩阵,第三张为黑白相间矩阵,以后为正常随机矩阵
%其中,pic_number为有效随机矩阵数量,kk为单个随机矩阵中1的数量范围
%-------------------------------------------------------------------------------------------------------------------------------------------%
%设定全局变量
%-------------------------------------------------------------------------------------------------------------------------------------------%
global image_width
global image_height
global pm
global matrix_init_point
global number_init_point
global matrixzone_scale
global numberzone_scale
global data_folder_address
global suffix_flag
image_width=60;
image_height=60;
pm=5;
matrix_init_point=[342 151];
number_init_point=[80 361];
matrixzone_scale=[pm*image_width pm*image_height];
numberzone_scale=[182 15];
%-----------------------------------------------------------------------------------------------------%
%参数初始化,约定周期数
%-------------------------------------------------------------------------------------------------------------------------------------------%
team_pic_number=1200; %约定单组图像包含图像数
flag_pic_number=floor(pic_number/(team_pic_number+1))+1; %约定随机矩阵的周期数,根据总图片数和1200张有效矩阵进行限制
%-------------------------------------------------------------------------------------------------------------------------------------------%
%随机矩阵生成
%-------------------------------------------------------------------------------------------------------------------------------------------%
mask_random=sparse_mask(pic_number,image_width,image_height,kk);
%-------------------------------------------------------------------------------------------------------------------------------------------%
%功能型头矩阵生成
%-------------------------------------------------------------------------------------------------------------------------------------------%
mask_header=FunMMgenerate_diamond(image_width,image_height);
%-------------------------------------------------------------------------------------------------------------------------------------------%
%返回矩阵设计
%-------------------------------------------------------------------------------------------------------------------------------------------%
masksy=[mask_header;mask_random]; %组合返回矩阵
%-------------------------------------------------------------------------------------------------------------------------------------------%
for f=1:flag_pic_number
%-----------------------------------------------------------------------------------------------------%
%保存文件夹路径设计
%------------------------------------------------------------------------------------------------------------------------------------------%
firstlevel_folder_address='F:\matlab works\data\CS method_r6 data_diamond\'; %绝对地址,应设定到matlab works的data文件夹中
if suffix_flag==0
data_folder_name = strcat(num2str(pm),'bMM_kk',num2str(kk),'_',num2str(image_width*image_height)); %相对标号,设定随机矩阵单个像素所用DMD的像素行数(设定像素为方形)
data_folder_address=strcat(firstlevel_folder_address,data_folder_name);%,'_',time_folder); %完成图像序列的地址文件夹
else
data_folder_name = strcat(num2str(pm),'bMM_kk',num2str(kk),'_',num2str(image_width*image_height),'-',num2str(suffix_flag)); %相对标号,设定随机矩阵单个像素所用DMD的像素行数(设定像素为方形)
data_folder_address=strcat(firstlevel_folder_address,data_folder_name);%,'_',time_folder);
end
while exist(data_folder_address,'dir')
suffix_flag=suffix_flag+1;
data_folder_name = strcat(num2str(pm),'bMM_kk',num2str(kk),'_',num2str(image_width*image_height),'-',num2str(suffix_flag));
data_folder_address=strcat(firstlevel_folder_address,data_folder_name);
end
mkdir(data_folder_address); %创建文件夹,括号中为文件位置及文件名
%-------------------------------------------------------------------------------------------------------------------------------------------%
%生成最终大矩阵
%-------------------------------------------------------------------------------------------------------------------------------------------%
if f==flag_pic_number
temp_pic_number=pic_number-team_pic_number*(f-1);
flag_temp_end=pic_number;
else
temp_pic_number=team_pic_number;
flag_temp_end=team_pic_number*f;
end
mask=[mask_header;mask_random((team_pic_number*(f-1)+1):(flag_temp_end),:)]; %组合矩阵
%-------------------------------------------------------------------------------------------------------------------------------------------%
%生成矩阵图片主循环,调用外部赋值程序依据DMD分辨率进行重新赋值,赋值后贴入数字标签,并保存
%-------------------------------------------------------------------------------------------------------------------------------------------%
for i=0:(temp_pic_number+2)
MMx=zeros(numberzone_scale(1,1),numberzone_scale(1,2));
pic_name=strcat(sprintf('%04d',i),'_PAT.bmp');
m1=rem(fix(i/1000),10);
m2=rem(fix(i/100),10);
m3=rem(fix(i/10),10);
m4=rem(i,10);
temp=reshape(mask(i+1,:),image_width,image_height)';
MMx(1:32,:)=Num2pic(m1); %粘贴数字标号
MMx(51:82,:)=Num2pic(m2);
MMx(101:132,:)=Num2pic(m3);
MMx(151:182,:)=Num2pic(m4);
MM=MMgenerate_diamond(temp,MMx);
pic_folder=strcat(data_folder_address,'\',pic_name);
imwrite(logical(MM),pic_folder);
end
end
%-------------------------------------------------------------------------------------------------------------------------------------------%
end