이와 같은 물체에 대한 약간 다른 이미지가 많이 있다고 상상해 보십시오. 모두 같은 거리에서 촬영되었으며 물체는 중심 주위만 회전합니다(따라서 모든 사진에서 화석의 크기는 동일합니다).
이제 사진의 양면에 가상 눈금자를 갖고 싶을 것입니다. 그런데 물체의 크기는 얼마나 됩니까?
다행스럽게도 실제 측정값으로 이미지를 촬영하고 물체를 반으로 자르도록 매달았습니다(그러나 그 옆에 있음)... (또한 정확히 같은 거리에서, 따라서 물체가 동일하게 커짐):
이제 다음과 같이 모든 이미지에 가상 눈금자를 배치하려고 합니다.
먼저 모든 사진이 충분히 크다고 느낄 때까지(이 게시물 상단의 GIF와 같이) 모든 사진의 크기를 동일하게(LaTeX에서) 조정해야 합니다.
다음과 같이 이미지를 로드할 수 있습니다.
\foreach \i in {1,...,16}{
\begin{figure}
\hspace{0cm}
\vspace{0cm}
\centerline{
\includegraphics[scale=0.1, angle=9,origin=c]{./SourcePictures/Fossil\i.jpg}
}
\end{figure}
}
크기가 적당해지면 이미지의 크기가 실제 센티미터 단위로 얼마나 큰지 파악해야 합니다. 그런 다음 가상 눈금자를 조정하여 크기가 정확하도록 할 수 있습니다.
위에 묘사된 가상 규모의 경우\fgruler{왼쪽 위}하지만 규모를 확장할 방법을 찾지 못했습니다. 방금 이 게시물을 발견했습니다.축, 실제 배율, 아마도 더 나은 방법을 설명하는 것은 무엇입니까? 아니면 사진의 실제 센티미터와 일치하도록 페이지 크기를 조정해야 합니까?
이에 대한 깔끔한 작업 흐름을 만드는 방법에 대한 제안 사항이 있습니까?
이 경우에는 다음을 수행했습니다.
- 측정값이 포함된 사진 1장
- 누워서 회전하는 사진 16장(1세트)
- 직립 회전 사진 16장(세트 2)
세트 1과 세트 2는 수직으로 약간 이동해야 합니다.
다음은 세트 1의 사진 예입니다.
다음은 세트 2의 사진 예입니다.
답변1
나는 당신이 그와 비슷한 것을 원한다고 생각합니다.
다음 솔루션은 TikZ 및 TikZ-calc를 사용합니다.
ㅏ.첫 번째 단계에서는 이미지를 노드에 넣었습니다.
비.그런 다음 간단한 내용을 추가합니다.해당 노드의 좌표계.
씨.범위 환경의 도움으로 좌표계 내부의 이미지에 TikZ 항목을 추가할 수 있습니다.
d1.힌트: 저는 cmHgI.jpg
여기서 시작 포스트부터 사용합니다. 없는 사용자에게는 cmHgI.jpg
나타납니다.example-image.jpg
d2. 단서는 눈금자에서 '단위 길이'를 측정하여 그려진 cmHgI.jpg
모든 TikZ 눈금자에 사용하는 것입니다.
€dit: 키를 추가했습니다\def\ShowHelps{1} % 1 'yes' 0 'no'
도움이 되지 않는 경우:
\documentclass[a4paper, landscape]{article}
\usepackage[margin=2cm, showframe=false]{geometry}
\usepackage{mwe} % Dummy images
\usepackage{tikz}
\usetikzlibrary{calc}
\pgfkeys{/tikz/savevalue/.code 2 args={\global\edef#1{#2}}}
\def\ShowHelps{1} % 1 'yes' 0 'no'
\begin{document}
\centering\begin{tikzpicture}[font=\sffamily,
Help/.style={font=\Huge, red}
]
\node[anchor=south west,inner sep=0pt] (myimage) at (0,0) {
\IfFileExists{cmHgI.jpg}
{\includegraphics[scale=0.15]{cmHgI.jpg}}
{\includegraphics[width=0.75\textwidth]{example-image.jpg}}
};
\begin{scope}[x={(myimage.south east)},y={(myimage.north west)}]
% Restrict the draw area
\clip (0,0) rectangle (1,1);
% Frame around image - optional
\draw[] (0,0) rectangle (1,1); % optional
% CoSy inside node
\newcommand\ShowHelpCoSy{
\draw[help lines,xstep=.1,ystep=.1] (0,0) grid (1,1);
\foreach \x in {0,1,...,9} { \node[anchor=north] at (\x/10,0) {0.\x}; }
\foreach \y in {0,1,...,9} { \node[anchor=east] at (0,\y/10) {0.\y}; }
}
\ifnum\ShowHelps=1 \ShowHelpCoSy \fi%
\ifnum\ShowHelps=1\fill[Help] (0.5,0.75) circle(3pt) node[above]{(0.5,0.75)};\fi% <-- Position Test
% Now the stuff:
\path[] (0.705,0.4) coordinate(U1) -- (0.705,0.519) coordinate(U2);
\ifnum\ShowHelps=1 \draw[Help] (U1) circle(2pt) node[label=left:U1]{} -- (U2) circle(2pt) node[label=left:U2]{};\fi % show unitlength line
\path let \p1=($(U2)-(U1)$) in
\pgfextra{ \pgfmathsetlengthmacro{\unitlength}{veclen(\x1,\y1)} }
[savevalue={\u}{\unitlength}];
\ifnum\ShowHelps=1 \node[Help] at (0.725,0.25) {unitlength U1U2 = \u}; \fi%<--- show unitlength
\ifnum\ShowHelps=1 \draw[blue, transform canvas={xshift=2mm}] (U1) -- +(0,\u);\fi % Test
% Small Ruler
\draw[very thick] (0.3,0.35) coordinate(A) -- +(0,3*\u);
\foreach \n in {0,1,...,3}{%%
\draw[very thick] ([yshift=\n*\u]A) -- +(-3mm,0) node[left]{\n}
\ifnum\n=0 node[anchor=west, right=3mm]{cm}\fi;
}%%
\foreach \n in {0.1,0.2,...,3}{%%
\draw[] ([yshift=\n*\u]A) -- +(-1.5mm,0);
}%%
% Image Ruler y
\draw[very thick] (0,0) coordinate(B) -- +(0,10*\u);
\foreach \n in {0,1,...,10}{%%
\draw[very thick] ([yshift=\n*\u]B) -- +(3mm,0) node[right]{
\ifnum\n=0 \else \ifnum\n=1 \n\,cm \else \n \fi\fi};
}%%
\foreach \n in {0.1,0.2,...,10}{%%
\draw[] ([yshift=\n*\u]B) -- +(1.5mm,0);
}%%
% Image Ruler x
\draw[very thick] (0,1) coordinate(C) -- (15*\u,1);
\foreach \n in {0,1,...,15}{%%
\pgfmathsetmacro\Color{\n<9 ? "black" : "white"}
\draw[very thick, \Color] ([xshift=\n*\u]C) -- +(0,-3mm) node[below, text=\Color, inner sep=1pt]{
\ifnum\n=0 \else \ifnum\n=1 \n\,cm \else \n \fi\fi};
}%%
\foreach \n in {0.1,0.2,...,15}{%%
\pgfmathsetmacro\Color{\n<9 ? "black" : "white"}
\draw[\Color] ([xshift=\n*\u]C) -- +(0,-1.5mm);
}%%
\end{scope}
\end{tikzpicture}
\end{document}
답변2
현재 다음 코드를 통해 확대/축소 및 자르기를 수행하고 있습니다.
\documentclass{article}
\usepackage{geometry}
\geometry{paperwidth=10cm, paperheight=10cm, margin=0cm}
\usepackage{graphicx}
\usepackage{pgffor}
\pagenumbering{gobble}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\ScaleImages}{0.6}
\newcommand{\DisplaceHorizontallySetA}{-18cm}
\newcommand{\DisplaceVerticallySetA}{-1.03cm}
\newcommand{\DisplaceHorizontallySetB}{0.5cm}
\newcommand{\DisplaceVerticallySetB}{-4.5cm}
\newcommand{\DisplaceHorizontallySetC}{0.5cm}
\newcommand{\DisplaceVerticallySetC}{-3cm}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\foreach \i in {0,...,0}{ %%%% First picture
\begin{figure}
\hspace{\DisplaceHorizontallySetA}
\vspace{\DisplaceVerticallySetA}\\
\centerline{ \hspace{\DisplaceHorizontallySetA}
\includegraphics[scale=\ScaleImages, angle=0.7]{./Pictures/2020-08_Object-1_(51-208North_4-383South)_Picture-\i.jpg}
}
\end{figure}
}
\paperwidth=15cm
\foreach \i in {1,...,16}{ %%%% First rotation (picture 1 until 16)
\begin{figure}
\hspace{\DisplaceHorizontallySetB}
\vspace{\DisplaceVerticallySetB}\\
\centerline{
\hspace{\DisplaceHorizontallySetB}
\includegraphics[scale=\ScaleImages]{./Pictures/2020-08_Object-1_(51-208North_4-383South)_Picture-\i.jpg}
}
\end{figure}
}
\foreach \i in {17,...,32}{ %%%% Second rotation (picture 17 until 32)
\begin{figure}
\hspace{\DisplaceHorizontallySetC}
\vspace{\DisplaceVerticallySetC}\\
\centerline{
\hspace{\DisplaceHorizontallySetC}
\includegraphics[scale=\ScaleImages]{./Pictures/2020-08_Object-1_(51-208North_4-383South)_Picture-\i.jpg}
}
\end{figure}
}
\end{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
다음과 같이 .PDF가 생성됩니다.
그런 다음 다음 터미널 명령줄을 사용하여 이를 .PNG로 변환합니다.
convert -density 400 CropperXYZ.pdf CroppedXYZ.png
첫 번째 이미지를 물리적 눈금자와 잘 정렬했기 때문에 이제 사각형의 실제 크기를 알 수 있습니다.
이제 가상 눈금자를 오버레이하는 부분이 남아 있습니다.