?? 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 + -