📄 11.txt
字号:
%生成碎裂人脸图像
%二〇〇九年一月六日
clear
clc
tic
%模板大小
mMask=32;
nMask=32;
alphaMask=repmat(0,[mMask nMask]);
O=[mMask/2 nMask/2];
sigma=mMask/4;
for i=1:mMask
for j=1:nMask
P=[i j];
R=norm(P-O);
alpha=exp(-(R/sigma).^2);
alphaMask(i,j)=alpha;
end
end
imshow(uint8(255*alphaMask));
%打开目标图像
fileName='PC130924.JPG';
sourceImage=imread(fileName);
[M N temp]=size(sourceImage);
figure
imshow(sourceImage);
sourceImage=double(sourceImage);
%纹理图像来源
path='D:\MECCA\程序编写\研究程序\生成花式图像\照片资料';
currentPath=what;
cd(path);
textureName=dir;
textureNumber=length(textureName)-2;
cd(currentPath.path);
%开始形成花式图像
targetImage=repmat(0,[mMask*M nMask*N 3]);
[mTarget nTarget temp]=size(targetImage);
index=1;
iStart=1;
for i=1:M
disp(['现在进行到…………' num2str(100*i/M) '%']);
jStart=1;
for j=1:N
%读取纹理
cd(path);
textureImage=imread(textureName(index+2).name);
index=index+1;
index=mod(index-1,textureNumber)+1;
cd(currentPath.path);
%处理纹理
textureImage=imresize(textureImage, [mMask nMask], 'bicubic');
textureImage=double(textureImage);
textureImage(:,:,1)=textureImage(:,:,1).*(alphaMask);
textureImage(:,:,2)=textureImage(:,:,2).*(alphaMask);
textureImage(:,:,3)=textureImage(:,:,3).*(alphaMask);
%写入纹理
pixel=sourceImage(i,j,1);
targetImage(iStart:iStart+mMask-1,jStart:jStart+nMask-1,1)=textureImage(:,:,1)+pixel*(1-alphaMask);
pixel=sourceImage(i,j,2);
targetImage(iStart:iStart+mMask-1,jStart:jStart+nMask-1,2)=textureImage(:,:,2)+pixel*(1-alphaMask);
pixel=sourceImage(i,j,3);
targetImage(iStart:iStart+mMask-1,jStart:jStart+nMask-1,3)=textureImage(:,:,3)+pixel*(1-alphaMask);
jStart=jStart+nMask;
end
iStart=iStart+mMask;
end
figure
imshow(uint8(targetImage));
imwrite(uint8(targetImage),'花式图像.bmp','bmp');
toc
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -