仮想定規(スケール)を均等なサイズの画像に拡大縮小する(複数の画像、360°製品写真の場合)

仮想定規(スケール)を均等なサイズの画像に拡大縮小する(複数の画像、360°製品写真の場合)

このような物体のわずかに異なる画像が多数あり、すべて同じ距離から撮影され、物体は中心の周りを回転しているだけであると想像してください (したがって、すべての画像で化石の大きさは同じになります)。

ここに画像の説明を入力してください

ここで、写真の両側に仮想定規を配置する必要があります。しかし、オブジェクトの大きさはどれくらいでしょうか?

幸運なことに、実際の寸法で、オブジェクトを半分に切るように(ただし、オブジェクトの隣に)吊るした画像も撮影しました...(これもまったく同じ距離からなので、オブジェクトの大きさは同じです)。

ここに画像の説明を入力してください

ここで、次のようにすべての画像に仮想定規を配置します。

ここに画像の説明を入力してください

まず、すべての写真が十分な大きさになったと感じられるまで (この投稿の上にある 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 を使用します。

a.最初のステップでは、画像をノードに配置します。

b.次に、簡単なそのノードの座標系

紀元前スコープ環境の助けを借りて、座標系内の画像に任意の 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

最初の画像を物理的な定規とうまく合わせたので、正方形の実際のサイズがわかります。

残っているのは、仮想定規を重ね合わせる部分です。

関連情報