ラベル 技術的考察 の投稿を表示しています。 すべての投稿を表示
ラベル 技術的考察 の投稿を表示しています。 すべての投稿を表示

2016年7月6日水曜日

DPCMOSの画質向上について

DualPixelCMOSでもノイズのレベルが低い事についてイマイチ理解してなかったんですが、良く考えると当たり前でした、というお話。

画素が2倍になっているのでアンチエイリアスの様な事をしてると考えると、ノイズレベルが下がるのは理論的におかしく無かったんですよね。


まず、なぜ感度を上げるとノイズが出るのかという話ですが、まず信号のばらつきがあり、そこに感度向上による信号の増幅を行うから信号のばらつきの幅が増える事でノイズが出ます。

このため、各画素の信号のばらつきを少なくすればノイズも減るわけです。

画素数が少ない機種では各画素の受光面積が広く、1画素が受ける光子量が面積に応じて平均化されますからそもそものばらつきが少なくなるのでノイズが出にくくなります。

逆に、画素が小さいと光子量のばらつきがそのまま1画素の信号のばらつきに繋がりやすくノイズが目立つ結果になる、ということです。

次に、これを基本としてDPCMOSを考えます。

DPCMOSでは、今までの1画素が2画素となるため画素が小さく、信号にばらつきは出やすくなります。

画素の面積が半分になると同時に回路の面積が増えるために飽和しやすい、若しくは潰れやすいって事ですね。

ただし、DPCMOSでは2画素の信号に演算を行って1画素の結果を出しており、仮に片側の画素にばらつきが出て信号のレベルが上がってももう片側の画素との演算ですくい上げることができるため極端な信号のばらつきは切り捨てられる事になります。

このため最終的な出力では既存のセンサーよりノイズが乗りにくくなるわけです。

言うてみればハードウェアノイズキャンセルしてるって事ですね。

これが正しいとすれば、まあ確かに綺麗になるよね、と。
出力の各画素ではノイズキャンセルやってるわけじゃないというのも真。


まあ最終的な出力が綺麗ならハードウェアノイズキャンセルも悪いわけではないとのスタンスなのですが、カメラオタクの方々はハードウェアノイズキャンセル嫌いな方が多いので、そう考えるとこれはどうなんだろねとも思うのですが。

その分、信号のレベルが下がる事をカバーするためにAD変換なんかの精度は上がっていると思われますので、とんとん、という事じゃないかと。

2014年12月27日土曜日

コミケ会場での位置共有アプリのプライバシー、セキュリティについて

今回のアプリではTwitter認証とGPSによる位置取得というプライバシーにかかわる情報を取得するため、セキュリティ面で心配になる方も多いでしょうからちょっと解説です。

っとその前にちょっと一言。
そもそも、個別の個人情報の取得にはその運用に責任情報が付きまとうため、当方では余計に取得したいとは思っていません。
特に今回のアプリでは画面を開くだけで認証の取得や位置情報の取得の警告が出て、事前の確認をとることができないため、いらない情報は保持しないよう心がけています。
それをご理解いただいた上で、以降をお読みください。

それと、位置情報を送信しない=自分の位置情報は教えたくないけれどほかの人の場所は知りたい、というご要望には応えない方向での実装となっていますので、位置情報取得許可を出さないとアプリが利用できなくなってしまいます。
なので、利用する場合は位置情報は必ず送信するようにしてください。
ここも併せてご理解いただきますよう、お願いいたします。



まず位置情報についてですが、GPSにより取得した緯度経度の場所と、コミケ会場内でのコスプレ会場のおおよその中心位置からの距離をもとに、どこが一番近いかを割り出して、それをアプリ側に送信してデータベースに入れて利用しています。
実際に送られるのは、このリストの何番目なのか?という番号になります。
具体的には、以下のようなリストをあらかじめ用意しており、このリスト上に書いている各行の緯度経度(数字の部分ですね)ごとに距離を出して、どこが一番近いかを計算します。

Location {
 GARDEN("庭園", 35.6312189,139.7941999),
 RESTRAUNT("レストラン", 35.6306354,139.7953894),
 EAST_TRACKYARD_NORTH("東トラックヤード北",35.6329038,139.7971149),
 EAST_TRACKYARD_SOUTH("東トラックヤード南",35.630524,139.7982021),
 WEST_TRACKYARD_EAST("西トラックヤード東",35.6292106,139.7958388),
 WEST_TRACKYARD_WEST("西トラックヤード西",35.6284019,139.7940266),
 WEST_TRACKYARD_SOUTH("西トラックヤード南",35.6282539,139.795393),
 ARIAKE_WEST_PIER_PARK("有明西ふ頭公園",35.627033,139.7943277),
 ROOFTOP("屋上展示場",35.6284371,139.794094),
 PARKING("駐車場", 35.6269198, 139.7963214),
 ENTRANCE("エントランスプラザ",35.6304227,139.7940026);
}

この計算処理はクライアントプログラム側で行っているため、取得した緯度経度の情報はサーバー側に送信されず、自宅住所などが記録に残ることはありません。
距離の計算自体は中学のころに三角形の辺の長さの求め方などでやっているかと思いますので割愛します。
書く場所については、4隅をとるなどして端末一がその範囲の中にあるかを取得する方法もあるのですが、それは4隅のポイント取得が面倒であったことなどからやってません。
その実装内容さえ信頼性がないと心配な方は、アプリを職業プログラマーの方にでも解析してもらってください。

使用しているAPIであるGeolocation APIについては、以下のURL辺りを参考にしてください。
http://www.htmq.com/geolocation/


次にTwitter認証ですが、正直個人が作っていそうなアプリでとんでもなく多くの人の「書き込みできる、DMだって自由に遅れる権限」を取得しまくっているアプリが多い昨今、こんなに気を使う必要ないんじゃないの?って感じです。
基本、今回のアプリでいただく権限は読み取り属性のみとし、アカウントのIDとプロフ画像URL、およびフレンド(フォローしている人)の一覧を取得しています。
使用しているAPIは以下の二つとなります。

https://api.twitter.com/1.1/account/verify_credentials.json
https://api.twitter.com/1.1/friends/ids.json

この二つ、TwitterAPIの1.0以前はTwitter認証なしで使用できたと思いましたが、今はTwitter認証しなければ使用できなくなってしまったため、仕方なく認証を行っているというところです。
この認証処理はTwitter側で行われるため、アプリ側にパスワードがわたることはありません。

TwitterAPIのアクセスに関する詳細は、以下あたりを参考に。



何か質問があれば、Twitterにて質問してください。
気が向けばご返答します。

2013年7月6日土曜日

DualPixelCMOSAFについて

さって。

気になって気になって仕方なかったので勉強して、原理もわかりましたので同じく気になっている人向けに技術の推測記事。
よくわかってない人の勝手な推測だと思って、面白がって読んでやってください。


以前Canonが取得している特許などの情報も含めると、やはりピクセルを分割して1つのピクセルを2つの素子として使用しているように思えます。
提出済みの特許、および今までの像面位相差と違うのは、たぶん製造上の理由から全画素を左右2つに分割して、左右それぞれの映像を利用しているだろうこと。


マイクロレンズに入ってくる光がそれぞれ右側から入ったものが右側に、左側から入ったものが左側に来ることを利用し、左側からくる映像、右側からくる映像のそれぞれを生成し、演算によってAFを行うようです。
また、同時に演算によって右側の絵、左側の絵を合わせた画像を通常の画像として生成し、それを出力として使用しているようです。

そもそも今までの像面位相差は、AF用の画素をAF用の画素として利用して、AFに用いるだけの簡易な像を右と左別々に生成し、それを用いてAFを行っていました。
これを、AF用の画素だけでなく、全画素を用いて行っている、ということになりますね。

なぜ画像の周辺の画素が使えないかというと、画面の端の画素になればなるほど、片側からしか光が入らなくなるため、AFに用いる像としては暗くなりすぎるためだと思われます。



この予想に至る最後の決め手は提出していた特許だったわけですが、特許見た時には、結局こんな方法だったんだとおもって、がっくりきてしまいました。
自分が考えるに、これをやったら正直画像がきれいになるとは思えないからです。


結局デュアルチャネルにした段階で読み取り精度の問題が付きまといますし、全画素分割することで軽減しているとはいえ、左右のピクセルに分割する製造上の精度の問題も絡みます。
また、値を伝送するチャネルを増やしているためそれぞれの伝送回路の制度やAD変換の精度も絡みます。

フォトダイオードのセルを分けているわけではないというのであれば、セルを分割するのに用いられているであろう遮断壁(壁は無いとの発言がありますが、それだと値が読めないため【壁】ではないものの【壁に相当するもの】は絶対あります)が薄いことで、隣接する画素に対してノイズを与えないのかという問題があり、それをクリアしていない限りはセルを分けていないこと自体が精度的に問題になるわけです。


それに、AF制度としてもどうしても避けられない問題が出てきます。
まず画素を2つに分割するところまでしかいかないので、クロス計測できません。
クロス計測、もしくはさらにAF制度を上げていくためには画素を4分割して縦横に割っていく必要があります。
だったら画素を4倍にして、一つのマイクロレンズで4つをカバーするようにすればよい話になってしまいます。
画素を上げるとすぐにノイズ上昇につなげるきらいがありますが、結局この方法では2つの画素を使用して、その演算で一つの画素の値を出しているにすぎず、やっていることは画素を2倍にしたことにほかなりません。

そして、全画素を像として結びそこから演算を行うことで、速度的な問題が発生します。
もちろん精度は上がるわけですが、その制度を出すためにはAD変換含めかなりの量の演算を行わなければならず、20Mpixelという量を計算しようとすればどうしても動きものに対して像面AFのみで対応できず、通常の位相差とのミックスが必要になると思われます。
それを嫌って取得した像の一部のみをAFに使うのであれば、結局他社と同じように一部のセルのみをAFに使ったほうがノイズに対しての強度を保てることになってしまいます。


もちろん、自分の推測が外れている可能性はありますが、半導体の仕組みなどを考えると、あんまり外れているとは思えません。

興味深い、面白い方法だ、という意見が多くを占めていますが、ちょっと視点をずらせばあまりほめられた方法とでもないと思います。

そういう技術を大々的に発表して、さも画像に影響が出ないように言ってしまうところが「マーケティングのキャノン」らしくもありますが、技術屋さんの端くれとしては結構残念です。


本当にそうなのかどうかは、わかんないですけどね。