Manfrotto Befree試用

 Canon EOS 6D 2016-10-23 17:46:59 f/5.6 13sec ISO-200 51mm

Canon EOS 6D 2016-10-23 17:46:59 f/5.6 13sec ISO-200 51mm

Manforottoの軽量タイプの三脚を購入したので井の頭公園で試してきた。

  • 購入した三脚はManfrotto Befree MKBFRA4-BH。軽い(1.4kg)&格納高40cmで携帯性が高くて持ち運びしやすい(ケースもついてくる)。
  • 使用したカメラはEOS 6D(770g)+Tamron 20-70mm F2.8(845g)で合計重量1.6kg。耐荷重4kgなので特に問題なく使用できた。
  • 写真は井の頭公園のボート乗り場近くの橋から噴水を撮ったところ。
  • Lightroomで光を調整してる。
    • 全体のコントラスを下げてからシャドウを上げて木々のディテールが判別できるようにしてみた。
    • 川面に映った光部分の彩度を上げて強調してみた。
  • 構図が微妙。写真上端で建物が切れてしまっている。
    → 撮影するときに水平が取れておらず、後から回転+拡大処理したため。
  • 川面の光を綺麗に見せたかったけど、噴水、建物、木々など構成要素が多くてあまり主役を活かし切れていないような感がある。
  • 光の根元が水面と一致するようにもう少しローアングルから撮れればよかったかも。

Manfrottoの三脚はいい買い物だったように思う。持ち運びしやすい上に脚の伸縮もしやすくセットアップが簡単。しばらくは不動のメイン三脚になりそう。

Lightroomに関しては少しづつ触っているけど、不自然にならない範囲で調整するのが難しい。作業しているとどうしても調整が過剰気味になってしまう。この辺りは使い込んでいってうまいバランスを見つけるしないのかな。

落ち葉

 Canon EOS 6D 2016-10-15 12:37:04 f/2.8 1/80sec ISO-100 62mm

Canon EOS 6D 2016-10-15 12:37:04 f/2.8 1/80sec ISO-100 62mm

旧古河庭園で撮影した落ち葉。

  • 通っている写真教室で出された宿題が”秋の光”というテーマだったのでそれを意識して撮ってみた。
  • 秋の光というと、1. 夏の日差しと比較するとコントラスト抑えめで柔らかな光、2. 木漏れ日の印象が強い、といったイメージ。
  • 上記のイメージを念頭に、緑鮮やかな苔を背景にしつつ、枯れた落ち葉をメインに据える構図にしてみた。
  • 開放で撮ることで葉っぱの前後をぼかし、柔らかさを出してみた。

バラ園が有名ということで旧古河庭園に行ってみたんだけど、バラの写真はあまりうまく撮れなくて、奥の庭園でひたすら落ち葉やらどんぐりを撮っていた。当日は中庭でアイリッシュの音楽を演奏していて、とても雰囲気が良かった。庭園には楓もたくさんあるので紅葉の季節にもう一度行ってみたい。

 Canon EOS 6D 2016-10-09 17:09:09 f/2.8 1/100sec ISO-1600 75mm

Canon EOS 6D 2016-10-09 17:09:09 f/2.8 1/100sec ISO-1600 75mm

井の頭公園で撮影した紅葉し始めた楓。

  • F2.8のズームレンズ開放で撮影した。
  • 開放で撮ったためボケが大きくなって背景はキレイに撮れた気がする。
  • F値2.8~5.6くらいまで変えて撮ってみたけど背景としてはボケが大きく写るF2.8がベストだった(それ以外のFで撮った場合、細かいボケが多く写るため少しうるさく感じた)。
  • ボケを大きく撮れた反面、被写界深度が浅くなって楓の葉にピントがあまり合っていない。
  • 撮影しているときは風が吹いていたのと、被写体の葉が枝の先に付いているためかなり揺れていてピントを合わせるのが難しかった(左手で枝を押さえたりもしてみた)。
  • 撮影時は夕暮れ時で陽の光も落ちていたためISO感度を1600まで引き上げてシャッタースピードを稼ごうとしたが、ノイズの影響はあまり出ていないように見える。
  • この葉っぱの前で15分くらい粘って総数40~50枚くらい撮った中のベストショット。
  • 元写真は左上に別の枝の葉が写り込んでいて邪魔だったのでLightroomでクロップした。また若干赤と緑を強調している。
  • それ以外に葉っぱの間に細い蜘蛛の巣が張っていたのでLightroomでレタッチした。
  • 今回初めてLightroom使ったけれどMac純正のiPhotoや写真アプリと比較してレタッチ機能が一番優れていると感じた。
  • iPhotoのレタッチ機能は修正箇所をなぞると周囲に合わせて自動で処理がかかる。このとき修正箇所が色の変化が激しい輪郭付近の場合、色が混ざってしまってうまく機能しなかった(指定した場所周辺の色データをもとに積分処理している?)。
  • 一方Lighroomではレタッチ場所を選択した後、その場所をマスクするお手本を写真中の別の場所で指定できるため、より自然な雰囲気でレタッチできる。
  • 構図に関してはアイキャッチとなる赤く色づいた部分が右上の黄金分割点に位置するようにしてみた。
  • 背景に大きく余白を残しているのでポストカードやポスターに使えそう。
  • 半分だけ赤く色づいた楓の葉が象徴的。変化や成熟、といったテーマで捉えることもできそう。

総括としては楓の葉のピントがうまく合わなかったのが残念だった。風が収まるまで待ってから被写界深度を変えて何枚か撮影し、ピントが合った楓の葉とボケを大きく写した背景をあとで合成する、といった手法が取れたりすればベストだったのかな。

論理回路と関数型言語

ものすごく唐突に関数型言語と論理回路は似ているなー、と思った。

Pythonに関数型プログラミングの構文として用意してあるイテレータやジェネレータみたいな”状態を持つ関数”っていうのはカウンタに代表される組み合わせ回路と振る舞いが似ている。

論理回路のプロトタイプ作成とかに関数型言語使うと便利そうな。

何かそれぞれの起源に共通の祖先があったりするのかしら?

FPGA学習始動

FPGA学習ボードDE1で何かしたい!とブログで言ったきり半年くらい放置していたんだけど、そろそろ始動しようかなと重い腰を上げ始めてます。

やりたいことは音声周りの信号処理をFPGAで実装してみる、というもの。
DE1にはオーディオコーデックとしてWM8731というチップが実装されていて、これをI2CでFPGAから制御できるようになってる。一応コーデックを使ったサンプルプロジェクトがあったり、最近買った書籍にコーデックアクセス用のNiosIIペリフェラルのソースコードが載ってたりするのでそれを参考にしてみる。

これをやってみることで、ペリフェラル(I2Cモジュール)の実装、NiosIIの構築、AvalonMM対応デバイスの作成あたりを習得しつつ、信号処理の勉強の下地を作れるかな、と。

とりあえずFPGAに関しては本読んでばっかりで実践が全く足りていない状況なのでHDL書きながら色々試してみたいデス。

宮本茂のキーノート

GDC(Game Developers Conference)というゲーム開発者のためのカンファレンスがある。
世界中のゲーム開発者が集ってプログラミング、ゲームデザインなどなどゲームに関わる様々なテーマについて話し合ったり、発表し合う会合。
1999年に開催されたGDCではマリオシリーズやゼルダの伝説を産み出した宮本茂さんがゲームデザインについて発表していたらしく、その動画が公開されていたので観てみた。

で、話のテーマの1つになってたのがゲームの開発規模の見積もりについて。

この発表当時、開発中のゲームが開発中止になることが多かったらしい。
その原因としてゲームデザイナが技術を知らないために作業規模の見積もりを誤ってしまう、ということを宮本さんは挙げていた。
特にゲームにとって当たり前の部分を作るための時間の見積もりを誤ることが多いと言っている。
大体ゲームのコア部分のシーケンスは全体の1/4くらい(1999年当時)。残りの3/4のコア部分以外、ゲームにとって動いて当たり前、と思われるような部分(RPGでいう主人公の名前を入力する処理、とか)を作る作業を宮本さんは”労働”と呼んでいる。”労働”は出来るだけ減らしたい。なぜなら”労働”をこなすには物量が必要だから。

で、これに対して宮本さんは誰も作ったことの無い分野のゲームを作ると”労働”が少なくて済む、と言っていて、それがすごく面白いなぁと。

この発言に関して特にどういう意味合いの発言なのか補足が無かったんだけど、自分が思うにこれは実装する処理に対して比較対象があるかどうか、なのかなと。
どこにでもあるものを比較しようとすると、”あのゲームにはあったけどこのゲームには無いのか”とかそういう価値基準になってしまって、どうしても物量勝負になりやすい。
そもそも面白さのコアが他のゲームと違う軸にあれば、比較されることは無いし、従来のゲームでは当たり前だった処理を省ける可能性がある。

これ以外にも含蓄のあるお話が多くて、もの作り全般に適用できそうな部分があってなかなか何度も見直したくなるキーノートでした。

Project Euler

Project Eulerというサイトを見つけた。
このサイトにはコンピュータを使って解くタイプの数学の問題がたくさん載っている。
アカウントを取得すると各問題に回答したかどうかをサイト上で見ることができる。

10問くらい解いてみたけど、問題のタイプとしては素数とか数列とかそういった類のものが多い印象。
新しい言語を覚えるときに、このサイトに載ってる問題をその言語で解いたりすると勉強になりそう。

Schemeと再帰

Schemeチュートリアルの内容をゴリゴリ写経してます。

基本的な制御構造が繰り返しでなく再帰のため、初っぱなから再帰の洗礼に見舞われてます。
ということで再帰関数について調べたことについて書いてみます。


再帰関数とは
再帰関数とは関数それ自体が自らを呼び出す処理を持つ関数のこと。
例えば階乗の計算なんかがよく例として挙げられる。

(define (fact n)
   (if (= n 1)
      1
      (* fact (- n 1)))))

上記の関数factは関数本体からfact自身を呼び出している。
factに渡す引数は1ずつ減算されていて、n=1となったところで再帰処理の終端に到達する。
再帰処理を関数として記述するときは終端の設定を必ず行う(そうしないと無限ループに陥る)。


Flat recursion
リストのトップレベルのアイテム(アトム)を処理対象とする再帰処理をFlat recursionという(この語に関して日本語訳が見つからなかった)。
例えば下記のようなリストのトップレベル要素のみの総和を計算する関数が挙げられる。

;Flat recursion
(define (sum_list l)
  (if (null? l)
      0
      (+ (car l) (sum_list (cdr l)))))



Deep recursion
Flat recursionとは対照的に、リストの要素全てを処理対象とする再帰処理をDeep recursionという。
Deep recursionバージョンのsum_listを示すと下記のようになる。

;Deep recursion                                                                                                                  
(define (sum_list l)
  (cond ((null? l) 0)
        ((number? l) l)
        (else (+(sum_list (car l)) (sum_list (cdr l))))))



Tail recursion(末尾再帰)
関数の末尾が再帰呼び出しのみで終わっている再帰処理を末尾再帰という。
末尾再帰で階乗を計算する関数を書くと以下のような形になる。

;Tail recursion version                                                                                                          
(define (fact n)
  (define (iter product counter)
    (if (> counter n)
        product
        (iter (* counter product)
              (+ counter 1))))
    (iter 1 1))

この方法だと、引数に計算結果を渡しているので、計算の途中経過を再帰呼び出しの都度保存しておく必要が無い。そのため、末尾再帰を利用することでメモリの消費量を抑えることができる(らしい)。



…とりあえずこんな感じか。
現状、用語の確認がメインみたいな感じですな。
まだ実用的なプログラムに触れてないので、イマイチ再帰の効用について理解できてないのがちょっと。。
Schemeはリスト構造を基本に構成されているので、木構造のデータ(xmlとか)処理なんかが強いんだろうな、とかそのくらいの認識

Github漁って色んなコードを読んでみるべきかなー。

Schemeで遊ぶ

関数型プログラミング言語”Scheme”で遊んでます。

SchemeはLispの流れを汲んだプログラミング言語。
方々を調べ回ったところによると下記のような特徴を持った言語とのこと。

  • 複数のプログラミングパラダイムをサポート
    手続き型、オブジェクト指向、関数型の3つのパラダイムをサポートしている。

  • レキシカルスコープ(静的スコープ)
    レキシカルスコープを持つ言語。
    最近の言語は大抵レキシカルスコープを持っているので、取り立てて意識する必要はないと思うけれど。
    Emacs Lispや初期のLispがダイナミックスコープで実装されていたようなので、そちらと混同しないように、ということに注意。
  • プログラム内の全てのプロシージャが第一級プロシージャ
    式を関数の引数や戻り値、変数に格納する値として取り扱える。

  • シンプルな構文規則
    閉じ括弧で式を表す、前置記法で演算子を作用させる。ほぼこれだけ。
    しかし、とにかく括弧が多い。。
  • 再帰、再帰、再帰!
    繰り返し処理において再帰を多用する(らしい)。
  • 自動プログラミングやインタプリタ実装、言語処理の実装なんかに向いてる
  • Schemeを通じて特に身につけたいのは再帰処理の実装センスと関数型プログラミングのエッセンスを吸収すること。
    Processingで再帰使って絵を描いたりしたこともあったけど、どうにも再帰使った独自の実装にこぎ着けるところまでは行かなかった。
    というか自分で考えた再帰処理を実装してみると、大抵ヒープを食いつぶしてエラーを吐くという残念な結果にしかならないというトラウマが。。
    再帰は読むのも苦手なので、勘所をつかんでおきたい。

    勉強したいこと

    遅ればせながら今年初投稿。

    昨年は結構更新をサボってしまったので今年はもうちょっと更新頻度を上げたい(とかいいつつもう既に2月も半ば)。
    今年の抱負、とまでは行かないけど方針くらいは決めておきたいので、今勉強したい/やってみたいことをとりあえず挙げてみる。

    • FPGA学習ボードで遊ぶ
      2012_09_09_Terasic_DE1
      昨年の10月くらいに論理回路の勉強用にTerasicのFPGA学習ボード”DE1″(上の写真参照)を買ってみた。チュートリアル本を読んでいろいろいじってたんだけど、これを使ってHDLの勉強してみようかなと思ってる。願わくば自力でCPU実装できるところまで出来たら良いな、とか夢見ていたり。ただ、いきなりそこまで到達するのは難しそうなので、初めはマイコンのペリフェラル(SPIとかI2C)あたりを実装してみようかと考えてます。
      ちなみにこの学習ボード、現在は後述するマイコン関連の開発でロジアナとして使われていたりする(非常にもったいない)。。
    • ARMマイコン使って何か作ってみる
      2012-12-09_12_24_LPC1114
      今までマイコン関連は大昔に大学の研究でAtmel AVRをちょっと触ったのと、Arduinoで簡単な赤外線リモコン制御モジュールみたいなものを作っただけだった。もうちょっとこの分野について深めていきたいなと。メジャーなアーキテクチャであるARMのマイコン使って何か作ってみたい。
      年末年始にNXPのARMマイコンLPC1114とOLEDモジュールで遊んでたのでそれに関してまとめていこう。
    • 関数型プログラミングを勉強してみる
      前二つがハード系だったけどこれはソフト系。
      関数型プログラミングは前々から気になってたので何かしら言語を1つ選んでエッセンスだけでもつかんでおきたい。
      ということで、今はSchemeのチュートリアルを見ながら遊んでます。

    こんなところかな。
    どれもあんまり具体的な目標でないので、尻すぼみになりそうなのが非常にコワいところ。
    今年は上記に関することに関して、取り組んだ内容を出来るだけ書くようにしていきたいなぁと思ってます。