フルサイズ5060万画素

ところで以前レンズの理論上の解像度限界というのを求めたことがあった。これは、絞りを絞るほど回折によってボケてしまうという物理的な絶対的制約からくる解像度限界だった。

フルサイズセンサ (36x24mm) で 8688x5792pixel だとすると、画素サイズは 約 0.00414mm なので、F7 波長500nm でのレイリー限界 0.00427mm よりも細かくなる。

高画素数になるということは、より回折にシビアなセンサーになるということになる。ある程度よりも (この機種の場合 F7 程度) 絞ってしまえば、いくら高画素でも解像度はあがらないので意味がない。

実際のところでは、回折ボケよりも手ぶれのほうが厳しい場合が多いように思われるが、とにかく回折による解像度の限界を感じやすくなる。

ローパスレス

高画素化することによって空間的なサンプリング周波数があがり、ナイキスト周波数(=サンプリング周波数の半分)も上げることができる。十分に高いナイキスト周波数 (具体的にはレンズの性能よりもセンサーが勝る=レンズがローパスフィルタとして働く) の場合、センサー直前のローパスフィルタを省くことで画質の向上をはかることができる (ローパスフィルタでは、ナイキスト周波数ぴったりで遮断するということはできないので、いくらか解像度が犠牲になる)。

画素サイズを(アスペクト比間違いにより)間違えていたので、いろいろ修正しました。

  1. トップ
  2. tech
  3. EOS 5DS というフルサイズ5060万画素のカメラが発表された。

Picasa での色化け

先にまとめ

  • sRGB で出力すること
  • Google+ の「フォト」の設定で「自動補正」を「オフ」にすること

経緯

Picasa にアップロードすると、めちゃくちゃ色が変わるというのは認識していたが、面倒なので見ないふりをしていた。やる気を出してちゃんと調べた。

sRGB プロファイル強制適用

Picasa はアップロード時に問答無用で sRGB IEC61966-2.1 black scaled が適用される。マッチングされないで強制適用なようなので、AdobeRGB な画像をアップロードすると明かに彩度が落ちる。

sRGB でアップロードしても色が変わる

しかし、sRGB な画像をアップロードしても、色化けが起こる。OS に入っている sRGB と sRGB black scaled の違いかと思い (同じはずだけど)

http://www.color.org/srgbprofiles.xalter ここから .icc をダウンロードして

sudo cp ~/Downloads/sRGB_IEC61966-2-1_black_scaled.icc  /Library/ColorSync/Profiles/   
sudo chmod +r /Library/ColorSync/Profiles/sRGB_IEC61966-2-1_black_scaled.icc 

(なぜか read できない permission になってて混乱)

として、このプロファイルを使って書きだしてアップロードしてみたが、やはりダメ。Picasa にアップロードすると少し明くなってしまう。

いろいろ試行錯誤していたが、Google+ 側の「フォト」を開き、該当画像の「自動補正」を「オフ」にしたら色が正しくなった。Picasa 側ではこの設定が見えないので気付かなかった……

今後ハマらないように、Google+ 側の設定で自動補正をオフにした。念のため sRGB black scaled はそのまま適用するようにする。

  1. トップ
  2. tech
  3. Picasa にあげるときのカラープロファイル

いろいろ確認していたところ、Chrome で Preview.app と色が違うことに気付いた。sRGB モニタで見ていると同じように見えるが、AdobeRGB 色域のモニタにウィンドウを移動するとかなり彩度が上がる。謎……

Google Chrome は ICC v4 には対応してないが、sRGB_IEC61966-2-1_black_scaled.icc は v2 なので、それが原因ではない。

結局、結論は「Google Chrome はプライマリディスプレイのプロファイルしか認識しない」だった。

マルチモニタ環境で、モニタごと別々の Chrome のウィンドウを置いておくと、プライマリモニタ以外は全て色がずれるので気をつけましょうという感じだった。

なお Safari だけがマルチモニタでのプロファイル適用に対応しているみたいだった。

  1. トップ
  2. tech
  3. Google Chrome (Mac版) の色化け

USB 3.0 の伝送路における基本波が 2.5GHz なため、ISM バンドの 2.45GHz 帯 (2.4GHz〜2.5GHz)で電波障害が起きやすいという話。(波長の半分で1bit転送するのでデータレート的には5Gbps)

一応 USB 3.0 はEMI 対策として、スペクトラム拡散クロック (広い範囲にクロックを拡散することでピークを回避する) や、スプレッド処理 (信号経路には常にランダムのビットが流れるようにしてピークを防ぐ) をしているが、あまりに発生源とアンテナが近過ぎるとやはりダメらしい。

うちで使っているワイヤレスマウスも、USB 3.0 ハブに繋ぐとかなり挙動がおかしくてイライラする感じになる。

今後

USB 3.1 になると基本波が倍の 5GHz になるので、この問題は解決するかもしれない。(5.8GHz帯のISMバンドとはある程度離れてるし)

備考

USB 3.0 は 2.5GHz 基本波、5Gbps の物理ビットレートだが、8b/10b エンコードするので、実行ビットレートは 4Gbps 程度

USB 3.1 は 5GHz 基本波、10Gbps の物理ビットレート、128b132b エンコードなので、実行ビットレートは 9.7Gbps 程度

USB 3.0 では、USB 2.0 と違い、完全なスリープ状態でなければ常に信号が流れているらしい。


ref.

  1. トップ
  2. tech
  3. USB 3.0 の 2.4GHz 帯干渉 (無線マウスなどへの電波障害)

一定数以上のUSBデバイスを接続すると Mac が不安定になり、内蔵キーボード・トラックパッドなどが一切効かなくなる (USB バス全体が死ぬ感じ) という状況があり、よくわからないので、怪しいハブを止めたり、新しいハブを買ってみたりしていた。

そんななか、あるハブに替えたところバスが死ぬ前にエラーメッセージがでるパターンがようやく観測された。以下の通り (Console.app で USB を grep しながら見ていた)

the USB hardware ran out of device slots

このエラーメッセージで検索をかけたところ、まさにこの問題のことであろうFacebook のノートがひっかかった。

どうやら Haswell ではデフォルトだとたくさん繋ぐことができないらしい。このノートでもひとまずの解決方法が示されてはいるものの、USB 3.0 バスとの併用で疑問がある感じ。

リンクされているErgotron のドキュメントも読んだが、よくわからない。Haswell では25台以上はサポートしないと書いてあったり、もし30台以上のデバイスを繋ぐのであれば USB 3.0 デバイスは繋ぐなという感じのことが書いてある。

台数の根拠がよくわからないので、自分のところで追試を行なったが、「the USB hardware ran out of device slots」になるのは32台を超えたとき(32台までなら大丈夫)という感じだった。

そんなにいっぱい繋がないやろwww とお思いだろうか?

接続中のUSBデバイスの数

接続中のUSBデバイスの数は以下で出した。

system_profiler SPUSBDataType | grep 'Location ID' | wc -l

USB の規格上のデバイス数上限は127(USB のアドレスが7bitで、0は予約されている)、このアドレスは Mac 上では「場所 ID」や「Location ID」と呼ばれている。デバイスの抜き差しが発生していなければ普通は連番の番号が振られている。

上記コマンドではアドレスが割り振られたデバイスがいくつあるか? を算出している。なので現実世界における見掛けのデバイス数とは異なる。

手元の MacBook Pro Retina Late 2013 では何も接続していなくても以下のデバイスが有効になっている。

  • メモリカードリーダー(内蔵)
  • キーボード・トラックパッド(内蔵)
  • Bluetooth ハブ(内蔵)
  • Bluetooth USB コントローラ(内蔵)

つまり、外部にはこれらを抜いた28デバイスが最大となる。

USB 3.0 7ポートハブの罠

USB 3.0 ハブは USB 2.0 のハブの機能も持っている。これは、実際に物理レイヤーとして USB 2.0 レイヤーも持っている (USB 2.0 と USB 3.0 は物理プロトコルが全然違うからかな)。そんな関係からか、OS から見ると 3.0 のハブと 2.0 のハブ2種類が別々に見える。

あるチップの仕様書を見たりするとなんとなくわかりやすい、
http://ww1.microchip.com/downloads/en/DeviceDoc/00001681B.pdf

そして、7ポートのハブというのは、内部的には4ポートのハブチップを2個使って2段接続されている。

つまり、7ポートUSB3.0ハブは、見掛けは1台だが、OSには4つのデバイスに見え、SuperSpeed と Hi-Speed それぞれにアドレスが振られる。

どうしてもたくさん繋ぎたい場合

Ergotron のドキュメントに示されているように、とりあえず USB 2.0 の機器をたくさん繋ぎたい場合、

nvram -p | grep usb-options で何も設定されていないことを確認して

sudo nvram usb-options="%01%00%00%00"

を実行して再起動すると認識するようになる。

元に戻すには

sudo nvram -d usb-options

この方法は確かにデバイスの上限を突破できるみたいだが、手元で試したところバスが不安定になり、内蔵キーボードなどを巻き込んでバスが死ぬことがあった。

Mac の場合、USB 3.0 Hi-Speed バス (2.0 互換レイヤー)、USB 3.0 SuperSpeed バス (3.0レイヤー) のみがデフォルトでアクティブなバスとなっているが、このコマンドによって USB Hi-Speed バス (2.0 ネイティブレイヤー) のバスが有効になるっぽい。

消費電力が増えるデメリットがあるみたいだけど、他のデメリットがよくわからない。3.0 との併用がうまくいかない?

いずれにせよ、自分の環境では不安定になるのは解決されなかったので深く追わなかった。

自分の環境

これからは USB 3.0 だ!! と意気込んでハブ類は USB 3.0 にできるだけ統一しようとしており 7 ポートの USB 3.0 ハブを2台をメインにデバイスを接続していた。また、ディスプレイに内蔵されている USB 3.0 ハブも、どうせだからと接続していた。上記の罠の関係もあって、デバイス上限に達しやすい環境だった。

ハブがいっぱいあっても意味がないので、USB 機器は計画性を持って管理したほうが良い。上限いかねーよwwとか舐めてると余裕でひっかかる。

バスが死ぬのは、デバイス上限を超えるというエッジケース(仕様上は127台を超えるまで発生しない)をしっかりテストしておらず対応できないデバイスがあって暴走(バスをロック?)しているような気がする。バスが死ぬとCPUは生きているのにハードリセットしか終了方法がなくなるので絶対に避けたい。

まとめ

USB 2.0 ですむ範囲のデバイスは USB 2.0 用のハブでまとめたほうが良い。今回のようなケースもそうだし、コスト的にもかなり安くすむ。USB 3.0 が必要なケースはそれほど多くない。カードリーダーや、HDD などぐらいだ。

また、DELL のディスプレイにはカジュアルに USB 3.0 ハブがついているが「せっかくだから…」と繋いでおいたりすると、上限を超えやすくなる。

というか根本的に127デバイスまでちゃんといけるようにしてほしい。

iBUFFALO USB2.0Hub バスパワー 4ポート ブラック 【PlayStation4,PS4,PS3 動作確認済】BSH4U06BK -

5.0 / 5.0

Anker USB 3.0 高速7ポートハブ (約1mのUSB 3.0ケーブル付き) -

5.0 / 5.0

  1. トップ
  2. tech
  3. Mac でいっぱいUSB機器を繋げない問題

たとえば視力2.0の人が300ppiのディスプレーで十分に綺麗に(隣り合うピクセルを区別できない)見れる距離で使っていたとしたら、同じ鑑賞距離の場合視力1.0の人は半分の150ppiでも十分ということになってしまう。

というわけで、デスクトップのディスプレイを想定して鑑賞距離を50cm固定としたとき、各視力でどれぐらいのppiがあれば十分かを出してみた。

0.3 52 ppi
0.5 87 ppi
0.7 122 ppi
1 175 ppi
1.5 262 ppi
2 349 ppi

2K 24インチモニタの場合 96ppi なので、50cm の鑑賞距離の場合、視力 0.5 の人は 4K になっても気付きにくいということになる。

  1. トップ
  2. tech
  3. 4Kと2Kが同じにみえる、という人もいるらしい。