⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dirka.m

📁 Pin hole in matlab. sss
💻 M
字号:
close all;clear all;clc;
%chip 20mm, ohnisko 20mm, scena 20m, obrazek 10m
%{
[fname,pname]=uigetfile('*.*','vyber');
obr1=strcat(pname,fname);f1=imread(obr1);
%}
f1=imread('cameraman.tif');
a=size(f1,1);
b=size(f1,2);
alfa=0; beta=0; f=10;
N=20; M=20; %rozmery chipu v mm
PocPix=1000;
Chip(PocPix,PocPix)=zeros; %Chip o poctu PocPix pixelu
VelPix=N/PocPix; %Velikost jednoho pixelu v milimetrech
Xc=0; Yc=0; Zc=20000; %pozice kamery
C=[Xc,Yc,Zc]; %C - kamera
Xp=1; Yp=1; Zp=1; %pozice obrazku v ose z
velikost=size(f1); %rozmery obrazku
figure(1)
imshow(f1);
f1=double(f1);

Sfx=(f*tan(beta))/sqrt(1+(tan(alfa))^2+(tan(beta))^2);
Sfy=(f*tan(alfa))/sqrt(1+(tan(alfa))^2+(tan(beta))^2);
Sfz=f/sqrt(1+(tan(alfa))^2+(tan(beta))^2);
Sf=[Sfx,Sfy,Sfz];
Xs=Xc+Sfx; Ys=Yc+Sfy; Zs=Zc+Sfz; %Prusecik opticke osy a roviny snimace
S=[Xs,Ys,Zs]; %S
sirka=16000; vyska=12000; %sirka platna a vyska
krokX=sirka/800; krokY=vyska/600;

for ii=1:a
    Yp=ii*krokY;
    Xp=1;jj=1;
for jj=1:b
Xp=jj*krokX;   
Sx=Xp-Xc; Sy=Yp-Yc; Sz=Zp-Zc; %Smernice
Smer=[Sx,Sy,Sz];
t=((S-C).*Sf)/(Smer.*Sf);
X=C+Smer*t; %souradnice pruseciku
X_=X-S; %posun pocatku souradnic z globalnich do stredu snimace
%==souradnice na snimaci
chi=sqrt((X_(1,1))^2+(X_(1,3))^2); %vertikalni smer
delta=sqrt((X_(1,2))^2+(X_(1,3))^2); %horizontalni smer
pixelX=round(chi/VelPix); %poradi pixelu
pixelY=round(delta/VelPix); 
if (X_(1,1)<0) pixelX=(-1)*pixelX; end
if (X_(1,2)<0) pixelY=(-1)*pixelY; end
 ChipX=(PocPix/2)+pixelX; ChipY=(PocPix/2)+pixelY;
 testChipX=ChipX+500; testChipY=ChipY+500;
if ((testChipX<1000) && (testChipY<1000))
    Chip(ChipX,ChipY)=f1(jj,ii,1); %prirazeni hodnoty jasu z obrazku na chip
end
   
    end
end
figure(2)
projekce=uint8(Chip);
%vyst_obr=reshape(Chip,256,256);
imshow(Chip,[0 255]);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -