2014年8月27日水曜日

正方形のボケ

基本的に写真のボケは円形ですが、場合によっては非円形の場合があります

この画像の場合は正方形のボケになっています

このような写真を撮りたい場合、正方形のボケになるレンズを探してもいいのですが、面倒なので自分でフィルタを作ってみましょう

と言っても非常に簡単で
このように正方形の穴を開けた厚紙をレンズの前に置くだけです

こうすることによりボケは円形ではなく、切り抜いた穴の形になります

というかこれ、街灯などを星形に撮影する方法と全く同じです


この方法の問題として
1) レンズの前に不適合の絞りがあるためにケラレが大きい
2) 隅の方はレンズ内の絞りが支配的となるために狙った形にならない
という点があります
これはどちらも「周りに影響がある」ということなので、広角気味で撮影して中央部分をトリミングして使うことにより解決できます

それと別の問題として、絞りの形は画像に写しこむために、後から修正することができません
そのため後から水平補正を行うと四角形のボケが不自然な角度になる可能性があります

あと、当たり前ですがレンズの口径が減るのでF値が増えて暗くなるという影響があります
ただ、ボケの形をある程度自由に制御できるので、使い方によっては色々な表現ができると思います

2014年8月20日水曜日

STM32Cube

ここ数日、STM32Cubeを使ってコードを書いています

とりあえず手持ちのNucleoF401のコードですが、GUIで使用するペリフェラルを選択し、各パラメーターを設定して、出力されたソースファイルをビルドすればそのままバイナリを使うことができます

例えばSDIOのIPコアとFATFSのIPコアと、それらを連携させるコードを出力する場合は
SDIOで使用するハードを選択し
FATFSでSD Cardにチェックを入れる
たったこれだけで使用できます

一部のシリーズはGUIでクロックの供給を設定できます
(ただ、本当に設定するだけなので、どの組み合わせをするのがいいかという事は総当りで一覧を作るとかする必要があります)

まだできないこととして、makefileとリンカスクリプトは自前で用意する必要があるので、そのあたりは面倒です

CUIベースのGCCに対応して、リンカスクリプトも自動で書くように成ってくれれば相当使いやすいと思います
IPコアをユーザーが作成できるようになればmbedと同じくらい簡単に使えるようになると思います

UARTの送受信バッファが使いたい とか 細かいところでは色々と欲しい機能がありますが、現状でもかなり便利です

2014年8月18日月曜日

ズールータイム

標準時を示すための記号で、アルファベット1文字を使ったズールータイムと言われる表記があります
これはUTC±0hにアルファベットのZを割り当てているために、フォネティックコードのZからズールーと呼ばれているようです

タイムゾーンが違う地域を移動する、船舶や航空機などで使われることが多いようです

例えば、以下のURLに示す画像はF/A-18のHUDですが、左下に時計が表示されており、最後にZが表示されています
これは世界標準時±0時間でのタイムゾーンで時間を表示しているということです
https://en.wikipedia.org/wiki/File:F-18_HUD_gun_symbology.jpeg


このタイムゾーンのリストは米wikipediaに"List of military time zones"というページで紹介されています
https://en.wikipedia.org/wiki/List_of_military_time_zones

この表を引用するとこのような感じです
-12 Y
-11 X
-10 W
-9 V
-8 U
-7 T
-6 S
-5 R
-4 Q
-3 P
-2 O
-1 N
0 Z
1 A
2 B
3 C
4 D
5 E
6 F
7 G
8 H
9 I
10 K
11 L
12 M

Zを0とし、+1時間がA +2時間がB と言うのは直感的に理解できます
しかし-1時間はYではなくNが割り当てられています
またIの次はJではなくKが割り当てられています

/* 追記:2015/02/18 */
Iの次にJが使われていない理由は上記Wikipedia内に書いてありました
手書きでメモをした場合、iとjの見分けがつかない可能性があるため とのことです 言われてみれば納得の理由です
また、現在ではJは現地時の意味で使われることがあるそうです
/* 追記ここまで */

この表記方法はNathaniel Bowditch(ナサニエル ボーディッチ)という人が1800年頃に考案したようです
アルファベットの歴史とかその他諸々の歴史をよく知らないので、昔はこの並びが普通だったとか、そういう理由があるのかもしれませんが、使いづらいことに代わりは無いです

ただタイムゾーンを正確に表記することが目的なら"UTC+9"とか、正負記号1文字+数字2文字が一番確実ですね

2014年8月7日木曜日

F-35のコックピット

昨夜からF-35のコックピットの表示を調べています
ということで備忘録

まずF-35のコックピットと、以前のコックピットの大きな違いですが
F-35は目の前に大きなタッチ液晶があります
今までの戦闘機でもF/A-18E/Fなどはタッチ液晶を使っていましたが、それとは根本的に違います

F-35はパイロットが使いやすいように表示の大きさだとか場所を変更できます

この変更できるというのが非常に厄介で、出てくる画像で全てインターフェースが違うわけです
これアビオニクス担当の整備士は大変だよなぁ と思います 1機に専任の担当者がいるのかな…

しかし表示にはおおよそのパターンがあって

このような感じで分割できるようです
また、G-Nまでは個別に非表示にでき、例えばG,Hを非表示にしてCの領域を広くすることができます
また、G-Jを非表示にして、C-DとG-Jをまとめて大きな領域を作ることもできます

C-Nの表示内容は
・水平儀
・燃料
・兵装
・レーダー
・エンジン
・コンパス
等があり、それ以外にもたくさんあります
それぞれは上記画像の領域に自由に配置することができるようです
なので画像によってはG-N領域に水平儀が有ったり、別の画像ではC-Fにあったりします
レーダーはC-Fの領域に配置したり、C-D,G-Jをまとめて大きく表示したりできます

C-FとG-Nはただの大きさ違いではなく、表示方法にも若干の変更がされています
例えば水平儀はC-Fの領域には対気速度と高度等が表示されていますが、G-Nの領域には水平だけが表示されています
また、画像によって若干違うので、開発時期などにより違うのか、自分で選べるかのどちらでしょう


調べれば調べるほどどんどん違う表示が出てきます 頭痛くなってきました。。。
こりゃ値段も高くなるわけです。。。

2014年8月5日火曜日

WinにOpenCV環境を作る

1) OpenCVのダウンロード

プロジェクトサイト http://sourceforge.net/projects/opencvlibrary/ からEXEファイルをダウンロード
EXEを起動すると展開先のパスを聞かれるので適当な場所を指定する
ちなみに2014/08/05時点でバージョンは2.4.9だった

2) OpenCVの移動

OpenCVを適当な場所に移動する
今回はC:\直下にした
こんな感じになってる

3) PATHの設定

OSの環境変数にバイナリのパスを通す
今回の例では"C:\opencv\build\x86\vc10\bin"

4) プロジェクトの作成

VisualC++を起動してプロジェクトを作成する
種類はWin32コンソールにする

5) プロジェクトの設定

プロパティマネージャでMicrosoft.Cpp.Win32.userをダブルクリックする

プロパティページというダイアログで共通プロパティ->VC++ディレクトリを選択
インクルードディレクトリにopencv\build\includeのパスを
ライブラリディレクトリにopencv\build\x86\cv10\libのパスをそれぞれ設定する


あとはてきとーにソースコードを書いていけばいいらしい
VisualC++のディレクトリ配置が結構面倒なので、あんまり簡単にはいかない

Ubuntuのほうが簡単な気がする
でもUbuntuは使い慣れてないのと、アプリの関係で移行する気にはならない
Ubuntu入ったノートPCとか欲しいかも  でもどーせ買うならSurfacePro3のほうが楽しそう…

2014年8月3日日曜日

スミソニアン天体物理観測所星表

ちょっとやってみたいことがあって、恒星カタログが欲しくなったのでスミソニアン天体物理観測所星表というデータを落としてみました
NASAのWebサイトからダウンロードでき、展開後のデータは約50MBです

このデータは固定長文字列で表現されていて、フォーマットはWebサイトに公開されています
が、あんまり扱いやすいデータではないと思います

とりあえず構造体と、文字列から構造体へ変換する関数、それとそれに必要となる関数を作ったので、最後に置いておきます


スミソニアン天体物理観測所(SAO)星表は1行204文字の文字列で表され、それぞれのデータは\nで区切られます
つまり1つのデータは205バイトです
現在のカタログには258997個の恒星が登録されていて、データファイルの大きさは正確に53094385バイトです

※約26万個の中には削除フラグが付いているものがいくつかあります


1行205バイトのデータには52種の値が格納されており、その値は整数だったり、浮動小数点だったり、文字だったり、文字列だったりします

とりあえず簡単に使えそうなデータは赤緯、赤経、視等級くらいでしょうか
ただこのカタログにはどこにどれくらいの明るさの星がある ということしかわからず、星座の星を探す場合は何らかの方法で星座とそれに使われている恒星、恒星からSAO番号を関連付ける必要があります


このデータをどのように加工すれば欲しい情報が手に入るか… まだ不明なところも多いですが、もうちょっと色々調べてみようと思います