画像処理ソリューション
これを見れば画像処理の入門から基礎〜応用まで全てがわかるのを目指して!
   
プロフィール

ニックネーム:Akira
東京都の町田事業所に勤務
画像処理ソフトの開発を行っています。リンクフリーです!
詳細プロフィールは こちら
お問い合わせは、こちら↓

【補助HP】
画像処理ソリューションWeb版 【Newブログ】
イメージングソリューション

翻訳(Translate)

ブログ内検索


カテゴリ

最近のコメント

カレンダー

02 | 2010/03 | 04
S M T W T F S
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -

趣味のブログ

iPhone萬歳!
iPhoneの情報いろいろ。
ブログ学習帳
ブログ、SEO、アフィリエイト情報など(まだまだこれから)
俺流クラフト日記
ハンドメイド作品の記録(現在、放置中)

- PR -



最近の記事
(05/08)  2012年4月人気記事Top5
(04/06)  ユニークアクセス100万達成!
(03/19)  2012年2月人気記事Top5
(02/16)  2012年1月人気記事Top5
(01/16)  2011年12月人気記事Top5
(06/13)  引越し状況報告(6月)
(03/21)  ブログを引っ越します。
(02/19)  【C#】マウスホイールで画像の拡大縮小
(02/19)  【C#】マウスホイールイベントの追加方法
(02/11)  【.NET】Graphicsオブジェクトのアフィン変換(グローバル変換)
(02/07)  アフィン変換
(01/29)  画像処理ソリューションWeb版を公開しました。
(01/07)  アメトーク(2011.01.07)の家電芸人スペシャルで紹介されていた製品
(12/20)  【OpenCV2.2】Windows7(64bit)でUSBカメラが動作せず
(12/19)  【C++/CLI】矢印の大きさ変更、任意形状の指定方法
(12/13)  Windowsドライバの削除方法
(12/12)  【OpenCV2.2】新規プロジェクトの作成方法
(12/11)  OpenCV2.2の入手、ダウンロード、インストール、環境設定
(12/11)  国際画像機器展2010に出展しました。
(12/06)  【OpenCV2.2】ライブラリ構成(*.lib,*.hなど)
(12/06)  OpenCV2.2が公開されました。
(11/29)  Kinectの測定例
(11/27)  C#とOpenCVの融合プログラミング
(11/23)  【展示会情報】国際画像機器展2010に出展します。
(11/22)  Kinectサンプルプログラムの実行
(11/22)  Kinectドライバの入手、設定方法
(11/22)  Kinect購入
(11/20)  【OpenCV】IplImageの輝度値を参照、設定する
(11/19)  【C++/CLI】大文字/小文字、全角/半角、ひらがな/カタカナを区別せず比較する
(11/06)  パノラマ写真作成ソフト『Image Composite Editor』

【C++/CLI】文字列の分割(System.String.Splitメソッド)

メインページC++/CLI プログラミング

文字列を特定の文字で分割し、Stringの配列に格納するには
 System.String.Splitメソッド
を用います。

このメソッドの定義は
array<String^>^ Split (
    array<String^>^ separator,
    StringSplitOptions options
)

パラメータ
separator
   分割する文字列をString配列で指定します。
options
   StringSplitOptions::Nodeを指定すると分割した文字列が空の場合でもそのまま返します。
   StringSplitOptions::RemoveEmptyEntriesを指定すると分割した文字列が空の場合、除去されます。


【サンプルプログラム】
String^ SrcText = "A,B;C,,E,F";

//分割する文字列の配列
array<String^>^ SepString ={",", ";"};

//文字列の分割
array<String^>^ TextArr1 = SrcText->Split(SepString, StringSplitOptions::RemoveEmptyEntries);
array<String^>^ TextArr2 = SrcText->Split(SepString, StringSplitOptions::None);


このコードを実行し、TestArr1とTestArr2の中身をウォッチで確認すると、以下の通りとなります。

文字列の分割

区切り文字が1つの場合は
  array<String^>^ TextArr3 = SrcText->Split(',');
のように区切ることもできます。ただし、この場合はシングルクォーテーション( ' )なので注意して下さい。

これを応用すると、CSVファイルの読込が可能となります。
詳細は
  CSVファイルを開く
を参照下さい。
Loading...

最近の記事
(05/08)  2012年4月人気記事Top5
(04/06)  ユニークアクセス100万達成!
(03/19)  2012年2月人気記事Top5
(02/16)  2012年1月人気記事Top5
(01/16)  2011年12月人気記事Top5
(06/13)  引越し状況報告(6月)
(03/21)  ブログを引っ越します。
(02/19)  【C#】マウスホイールで画像の拡大縮小
(02/19)  【C#】マウスホイールイベントの追加方法
(02/11)  【.NET】Graphicsオブジェクトのアフィン変換(グローバル変換)
(02/07)  アフィン変換
(01/29)  画像処理ソリューションWeb版を公開しました。
(01/07)  アメトーク(2011.01.07)の家電芸人スペシャルで紹介されていた製品
(12/20)  【OpenCV2.2】Windows7(64bit)でUSBカメラが動作せず
(12/19)  【C++/CLI】矢印の大きさ変更、任意形状の指定方法
(12/13)  Windowsドライバの削除方法
(12/12)  【OpenCV2.2】新規プロジェクトの作成方法
(12/11)  OpenCV2.2の入手、ダウンロード、インストール、環境設定
(12/11)  国際画像機器展2010に出展しました。
(12/06)  【OpenCV2.2】ライブラリ構成(*.lib,*.hなど)
(12/06)  OpenCV2.2が公開されました。
(11/29)  Kinectの測定例
(11/27)  C#とOpenCVの融合プログラミング
(11/23)  【展示会情報】国際画像機器展2010に出展します。
(11/22)  Kinectサンプルプログラムの実行
(11/22)  Kinectドライバの入手、設定方法
(11/22)  Kinect購入
(11/20)  【OpenCV】IplImageの輝度値を参照、設定する
(11/19)  【C++/CLI】大文字/小文字、全角/半角、ひらがな/カタカナを区別せず比較する
(11/06)  パノラマ写真作成ソフト『Image Composite Editor』

【C++/CLI】改行文字

メインページC++/CLI プログラミング

メッセージボックスなどの文字列を改行させる時には
  System.Environment.NewLineプロパティ
を用います。

以下、サンプルと実行例です。

【サンプルプログラム】
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
                 button1->Text = "1行目の文字列" + Environment::NewLine +
                                         "2行目の文字列";
                 label1->Text  = "1行目の文字列" + Environment::NewLine +
                                        "2行目の文字列";

                 MessageBox::Show("ボタンとラベルの文字列が" + Environment::NewLine +
                                               "変更されました。");
             }

【実行例】
.NET 改行文字

             

.NET 改行文字

ボタンやラベルはプロパティの設定でも改行できるので、比較的良く使うのがメッセージボックスの改行の時でしょうか?

改行文字にはC#と同様にEnvironment::NewLineの他に \r\n や \n が使えるのですが、改行文字のみをプラス(+)で文字列を連結することはできない、つまり、

 MessageBox::Show("ボタンとラベルの文字列が"\r\n +
                                "変更されました。");

とはできないので、
\r\n" "の内側に書いて

 MessageBox::Show("ボタンとラベルの文字列が\r\n変更されました。");



 MessageBox::Show("ボタンとラベルの文字列が\r\n" +
                                "変更されました。");

とします。
 
Loading...

最近の記事
(05/08)  2012年4月人気記事Top5
(04/06)  ユニークアクセス100万達成!
(03/19)  2012年2月人気記事Top5
(02/16)  2012年1月人気記事Top5
(01/16)  2011年12月人気記事Top5
(06/13)  引越し状況報告(6月)
(03/21)  ブログを引っ越します。
(02/19)  【C#】マウスホイールで画像の拡大縮小
(02/19)  【C#】マウスホイールイベントの追加方法
(02/11)  【.NET】Graphicsオブジェクトのアフィン変換(グローバル変換)
(02/07)  アフィン変換
(01/29)  画像処理ソリューションWeb版を公開しました。
(01/07)  アメトーク(2011.01.07)の家電芸人スペシャルで紹介されていた製品
(12/20)  【OpenCV2.2】Windows7(64bit)でUSBカメラが動作せず
(12/19)  【C++/CLI】矢印の大きさ変更、任意形状の指定方法
(12/13)  Windowsドライバの削除方法
(12/12)  【OpenCV2.2】新規プロジェクトの作成方法
(12/11)  OpenCV2.2の入手、ダウンロード、インストール、環境設定
(12/11)  国際画像機器展2010に出展しました。
(12/06)  【OpenCV2.2】ライブラリ構成(*.lib,*.hなど)
(12/06)  OpenCV2.2が公開されました。
(11/29)  Kinectの測定例
(11/27)  C#とOpenCVの融合プログラミング
(11/23)  【展示会情報】国際画像機器展2010に出展します。
(11/22)  Kinectサンプルプログラムの実行
(11/22)  Kinectドライバの入手、設定方法
(11/22)  Kinect購入
(11/20)  【OpenCV】IplImageの輝度値を参照、設定する
(11/19)  【C++/CLI】大文字/小文字、全角/半角、ひらがな/カタカナを区別せず比較する
(11/06)  パノラマ写真作成ソフト『Image Composite Editor』

【OpenCV】輪郭処理(cvFindContours)を使ったラベリング処理

メインページOpenCV

OpenCVには標準的にはcvLabelingのようなラベリングの関数は無いので、

 ラベリングクラス(大阪大学の井村先生によるもの)
 Blob extraction library

を使いましょう!というのが一般的になってきているように思いますが、最初のラベリングクラスでは、画像の幅の画素数が4の倍数で無い場合、うまく動作してくれなかった気がするし、Blob extraction library は英語なので良く分からないし・・・
ということで、OpenCVに標準的にある輪郭処理の関数【cvFindContours】を使ってラベリングの処理ができないか?調べてみました。

結果、OpenCVの関数だけで、こんな感じ↓まで出来ました。

処理前ラベリング処理後
OpenCVでラベリングOpenCVでラベリング

何はともあれ、まずは分かりづらいcvFindContoursの関数です。
関数の定義は

int cvFindContours(
          CvArr* image,                        // 入力画像(8Bitモノクロ)
          CvMemStorage* storage,        // 抽出された輪郭を保存する領域
          CvSeq** first_contour,            // 一番最初の輪郭(ツリー構造を持つ)へのポインタ
          int header_size = sizeog(CvContour),  // シーケンスのヘッダサイズ
          int mode = CV_RETR_LIST,   // 抽出モード
          int method = CV_CHAIN_APPROX_SIMPLE,   // 近似手法
          CvPoint offset = cvPoint(0, 0)  // オフセット
          );

となっているのですが、とにかく分かりづらい抽出モード( mode )の理解から。

まずは mode = CV_RETR_TREE を例に取って説明したいと思います。

処理前の画像↓
OpenCVでラベリング

この画像の輪郭を外側から順に追いかけると、

  の内側に 、  の内側に  と  ・・・ というような構造になっています。

OpenCVでラベリング

この構造をツリーのように階層構造で表すと、

階層
(Level)
輪郭構造
OpenCVでラベリングOpenCVでラベリング

のように、一番外側に白の輪郭(Level = 1)があり、その内側に黒の輪郭(Level = 2)、さらにその内側に白の輪郭(Level = 3)・・・と、一番外側の白の輪郭から始まり、その輪郭の内側に黒の輪郭→白の輪郭→黒の輪郭→白の輪郭・・・とレベルが大きくなるにつれ、さらに内側に輪郭が存在しています。
この構造を保持しているのが CvSeq** first_contour となります。
このfirst_contourには一番最初の輪郭を示すポインタが格納されています。

同じ階層(Level)にある別の輪郭を参照したい場合は
  CvSeq* contour = first_contour->h_next;

とすれば、同じ階層にある輪郭を参照できます。
さらに
 contour = contour->h_next;
とすれば、さらに次の輪郭を参照出来ます。 
もし、contourNULL になったら同じ階層に、同じ親を持つ別の輪郭は無い事を意味しています。

同じ様に
 contour = contour->v_next;
とすれば、現在の輪郭のさらに内側にある輪郭へとポインタが移動します。

このようにh_next、v_nextを使うと、全ての輪郭を構造的に参照することが可能となります。

同様に
mode = CV_RETR_EXTERNAL  の場合、
OpenCVでラベリング

階層
(Level)
輪郭構造
OpenCVでラベリングOpenCVでラベリング

のように、一番外側の白の輪郭のみを取得します。

mode = CV_RETR_LIST  の場合、
OpenCVでラベリング

階層
(Level)
輪郭構造
OpenCVでラベリングOpenCVでラベリング

のように、白の輪郭、黒の輪郭、内側、外側関係なく、同じ階層で輪郭が取得されます。

mode = CV_RETR_CCOMP  の場合、
OpenCVでラベリング

階層
(Level)
輪郭構造
OpenCVでラベリングOpenCVでラベリング

のように、白の輪郭の一つ下のレベルに黒の輪郭を持つ構造となります。
ただし、ここで大事なのは白の輪郭のさらに内側にある白の輪郭(上図の5や6)も同じ階層となるので、ご注意下さい。

※modeの設定は共通して最初の階層の輪郭は白色の輪郭になっているようです。
 そのため、白色の地に黒色の輪郭のある画像を処理すると、最初の輪郭は画像全体となるのでご注意下さい。

ということで、cvFindContours関数を使って輪郭を描画するプログラムはこんな感じ↓になります。

////////////////////////////////////////////////////////////////
//  次の輪郭を描画する。
////////////////////////////////////////////////////////////////
void DrawNextContour(      
                IplImage *img,    //ラベリング結果を描画するIplImage(8Bit3chカラー)
                CvSeq *Contour, //輪郭へのポインタ
                int Level            //輪郭のレベル(階層)
                ){

      // 輪郭を描画する色の設定
      CvScalar ContoursColor;

      if ((Level % 2) == 1){
            //白の輪郭の場合、赤で輪郭を描画
            ContoursColor = CV_RGB( 255, 0, 0 );
      }else{
            //黒の輪郭の場合、青で輪郭を描画
            ContoursColor = CV_RGB( 0, 0, 255 );
      }
             
      //輪郭の描画
      cvDrawContours( img, Contour, ContoursColor, ContoursColor, 0, 2);

      //各種輪郭の特徴量の取得
      GetContourFeature(Contour); //←オリジナル関数です。(詳細は後述)

      if (Contour->h_next != NULL)
            //次の輪郭がある場合は次の輪郭を描画
            DrawNextContour(img, Contour->h_next, Level);

      if (Contour->v_next != NULL)
            //子の輪郭がある場合は子の輪郭を描画
            DrawChildContour(img, Contour->v_next, Level + 1);
}

////////////////////////////////////////////////////////////////
//  子の輪郭を描画する。
////////////////////////////////////////////////////////////////
void DrawChildContour(      
                IplImage *img,    //ラベリング結果を描画するIplImage(8Bit3chカラー)
                CvSeq *Contour, //輪郭へのポインタ
                int Level             //輪郭のレベル(階層)
                ){
             
      // 輪郭を描画する色の設定
      CvScalar ContoursColor;

      if ((Level % 2) == 1){
            //白の輪郭の場合、赤で輪郭を描画
            ContoursColor = CV_RGB( 255, 0, 0 );
      }else{
            //黒の輪郭の場合、青で輪郭を描画
            ContoursColor = CV_RGB( 0, 0, 255 );
      }
             
      //輪郭の描画
      cvDrawContours( img, Contour, ContoursColor, ContoursColor, 0, 2);
             
      //各種輪郭の特徴量の取得
      GetContourFeature(Contour); //←オリジナル関数です。(詳細は後述)

      if (Contour->h_next != NULL)
            //次の輪郭がある場合は次の輪郭を描画
            DrawNextContour(img, Contour->h_next, Level);
      if (Contour->v_next != NULL)
            //子の輪郭がある場合は子の輪郭を描画
            DrawChildContour(img, Contour->v_next, Level + 1);
}
 
////////////////////////////////////////////////////////////////
//  ラベリング処理
////////////////////////////////////////////////////////////////
void cv_Labelling(                     
             IplImage *src_img,       //入力画像(8Bitモノクロ)
             IplImage *dst_img        //出力画像(8Bit3chカラー)
             ) {
             
      CvMemStorage *storage = cvCreateMemStorage (0);
      CvSeq *contours = NULL;
             
      if (src_img == NULL)   
            return; 
         
      // 画像の二値化【判別分析法(大津の二値化)】
      cvThreshold (src_img, src_img, 0, 255, CV_THRESH_BINARY | CV_THRESH_OTSU);

      // 輪郭の検出(戻り値は取得した輪郭の全個数)
      int find_contour_num = cvFindContours (
                     src_img,                     // 入力画像
                     storage,                      // 抽出された輪郭を保存する領域
                     &contours,                  // 一番外側の輪郭へのポインタへのポインタ
                     sizeof (CvContour),      // シーケンスヘッダのサイズ
                     CV_RETR_TREE,       // 抽出モード
                                               
      // CV_RETR_EXTERNAL - 最も外側の輪郭のみ抽出
                                               
      // CV_RETR_LIST - 全ての輪郭を抽出し,リストに追加
                                               
      // CV_RETR_CCOMP - 全ての輪郭を抽出し,
                                                      // 二つのレベルを持つ階層構造を構成する.
                                                      // 1番目のレベルは連結成分の外側の境界線,
                                                      // 2番目のレベルは穴(連結成分の内側に存在する)の境界線.
                                                      // CV_RETR_TREE - 全ての輪郭を抽出し,
                                                      // 枝分かれした輪郭を完全に表現する階層構造を構成する.
                    
CV_CHAIN_APPROX_NONE    // CV_CHAIN_APPROX_SIMPLE:輪郭の折れ線の端点を取得
                                                                   // CV_CHAIN_APPROX_NONE: 輪郭の全ての点を取得
                                                                   // Teh-Chinチェーンの近似アルゴリズム中の一つを適用する
                                                                   // CV_CHAIN_APPROX_TC89_L1
                                                                   // CV_CHAIN_APPROX_TC89_KCOS
                     );

      if (contours != NULL){
            //処理後画像を0(黒)で初期化
            cvSet(dst_img, CV_RGB( 0, 0, 0 ));
            //輪郭の描画
            DrawNextContour(dst_img, contours, 1);
      }

      //メモリストレージの解放
      cvReleaseMemStorage (&storage);
}

という感じで、全ての輪郭を描画する事が出来ます。
最初に DrawNextContour(dst_img, contours, 1); と最初の輪郭を描画して、残りの輪郭は再帰的に描画しています。

輪郭は
  cvDrawContours( img, Contour, ContoursColor, ContoursColor, 0, 2);
のように
線幅2で描画していますが、これを
  cvDrawContours( img, Contour, ContoursColor, ContoursColor, 0, CV_FILLED);
とすると輪郭の内側が塗りつぶされます。

上記サンプルプログラムの途中で出てきたGetContourFeature関数は、輪郭のポインタを用いて、各種特徴量を計算しています。通常はこれらの特徴量を用いてフィルタ処理や検査などを行って下さい。(ここでは特徴量を拾うだけです。)

//各種輪郭の特徴量の取得
void GetContourFeature(CvSeq *Contour){
         //面積
         double Area = fabs(cvContourArea(Contour, CV_WHOLE_SEQ));
         //周囲長
         double Perimeter = cvArcLength(Contour);
         //円形度
         double CircleLevel = 4.0 * CV_PI * Area / (Perimeter * Perimeter);

         //傾いていない外接四角形領域(フィレ径)
         CvRect rect = cvBoundingRect(Contour);
         //輪郭を構成する頂点座標を取得
         for ( int i = 0; i < Contour->total; i++){
                  CvPoint *point = CV_GET_SEQ_ELEM (CvPoint, Contour, i);
         }
}

上記プログラムで注意が必要なのは、輪郭から面積を計算する関数cvContourAreaは、下図の様に輪郭線の内側の面積を計算します。(画素数ではありません。
下図の例では面積は 17.5 となります。
輪郭の内側の穴の面積は考慮されないので、穴の部分を除外したい場合はv_nextで一つ下の階層にある黒の輪郭を全て取得し、黒の面積を白の面積から引いて下さい。
OpenCVでラベリング

【輪郭座標について】
CV_GET_SEQ_ELEMマクロで取得している輪郭を構成する座標はcvFindContours関数の6番目の引数methodの設定できまります。

method = CV_CHAIN_APPROX_NONE  の場合
OpenCVでラベリング

上図のように輪郭を構成している座標全てを取得します。

method = CV_CHAIN_APPROX_SIMPLE  の場合
OpenCVでラベリング

上図のように輪郭を構成している折れ線の角の座標を取得します。

method = CV_CHAIN_APPROX_TC89_L1 
        もしくは     CV_CHAIN_APPROX_TC89_KCOS  の場合
OpenCVでラベリング

上図のように輪郭を構成している座標をTeh-Chinチェーンの近似アルゴリズムに基づいて近似した線の折れ線の角の座標を取得します。
との事ですが、詳細は良く分かりませんでした...(上図も実際の結果と異なるかも?)


一番最初に示したラベリング処理例の結果は、ここに記載したサンプルプログ ラムでは、同じ結果になりません。
 輪郭を描画している関数(cvDrawContours)で線幅を CV_FILLEDにして、輪郭の内側を塗りつぶし、輪郭が白の輪郭の場合は、適当な色で、黒の輪郭の場合は黒で塗りつぶすと、この結果になります。


OpenCVでは他にも、いろいろな特徴量を計算する関数が用意されています。
おそらくcvFindContours関数を使ってラベリング処理をした方が、いろんな使い道が考えられると思います。
 
 

Loading...

最近の記事
(05/08)  2012年4月人気記事Top5
(04/06)  ユニークアクセス100万達成!
(03/19)  2012年2月人気記事Top5
(02/16)  2012年1月人気記事Top5
(01/16)  2011年12月人気記事Top5
(06/13)  引越し状況報告(6月)
(03/21)  ブログを引っ越します。
(02/19)  【C#】マウスホイールで画像の拡大縮小
(02/19)  【C#】マウスホイールイベントの追加方法
(02/11)  【.NET】Graphicsオブジェクトのアフィン変換(グローバル変換)
(02/07)  アフィン変換
(01/29)  画像処理ソリューションWeb版を公開しました。
(01/07)  アメトーク(2011.01.07)の家電芸人スペシャルで紹介されていた製品
(12/20)  【OpenCV2.2】Windows7(64bit)でUSBカメラが動作せず
(12/19)  【C++/CLI】矢印の大きさ変更、任意形状の指定方法
(12/13)  Windowsドライバの削除方法
(12/12)  【OpenCV2.2】新規プロジェクトの作成方法
(12/11)  OpenCV2.2の入手、ダウンロード、インストール、環境設定
(12/11)  国際画像機器展2010に出展しました。
(12/06)  【OpenCV2.2】ライブラリ構成(*.lib,*.hなど)
(12/06)  OpenCV2.2が公開されました。
(11/29)  Kinectの測定例
(11/27)  C#とOpenCVの融合プログラミング
(11/23)  【展示会情報】国際画像機器展2010に出展します。
(11/22)  Kinectサンプルプログラムの実行
(11/22)  Kinectドライバの入手、設定方法
(11/22)  Kinect購入
(11/20)  【OpenCV】IplImageの輝度値を参照、設定する
(11/19)  【C++/CLI】大文字/小文字、全角/半角、ひらがな/カタカナを区別せず比較する
(11/06)  パノラマ写真作成ソフト『Image Composite Editor』

最近、デジカメがアツい!(裏面照射型CMOSセンサ採用デジカメの比較)

今回は、完全に個人的趣味です。

最近、次々とコンパクトデジタルカメラが発表され、ちょうど持っていたソニーのデジカメ(DSC-W7)が壊れたところなので、何を買おうか非常に悩み中
とりあえず、仕様を整理

ソニー vs カシオ vs リコー vs ニコン vs 富士フィルム
機種名SONY DSC-HX5VCASIO EX-FH100RICHO CX3
外観
発売日発売中2010年4月9日発売中
画素数1020万画素1010万画素1060万画素
外径寸法102.9×57.7×28.9mm105.0x63.2x29.9mm101.5×58.3×29.4mm
液晶サイズ3型3型3型
光学倍率10倍10倍10.7倍
マクロ撮影距離7〜50cm1cm〜
焦点距離
(35mm換算)
25〜250mm24〜240mm28〜300mm
F値F3.5(w)〜F5.5(T)F3.2(w)〜F5.7(T)F3.5(w)〜F5.6(T)
シャッター
スピード
30〜1/1600秒30〜1/2000秒8〜1/2000秒
ISO感度自動/125/200/400/800/1600
/3200
自動/100/200/400/800/1600
/3200
自動/80/100/200/400/800/1600
/3200
最速連写10枚/秒40枚/秒5枚/秒(7コマまで)
手ぶれ補正光学式CMOSシフト方式CMOSシフト方式
動画撮影HDHD
最速1000fps
(224×64画素の場合)の
モードもあり
1280×720画素
電源専用リチウムイオン充電池専用リチウムイオン充電池専用リチウムイオン充電池
HP商品ページ商品ページ商 品ページ


機種名ニコン P100FIJIFILM  FinePix HS10
外観
発売日発売中2010年4月17日
画素数1030万画素1030万画素
外径寸法114.4×82.7×98.6mm130.6×90.7×126.0mm
液晶サイズ3型3型
光学倍率26倍30 倍
マク ロ撮影距離1cm〜1cm〜
焦点距離
(35mm換算)
26〜678mm24〜720mm
F値F2.8〜F5F2.8(w)〜F5.6(T)
シャッター
スピード
8〜1/8000秒30〜1/4000秒
ISO感度自動/160/200/400/800/1600
/3200
自動/100/200/400/800/1600
/3200/6400
最速連写120枚/秒(60コマまで)10枚/秒(7コマまで)
手ぶれ補正CMOSシフト方式CMOSシフト方式
動画撮影1920×1080 30fps
HD
最速1000fps(サイズ不明)
電源専用リチウムイオン充電池(付属)
単3形アルカリ乾電池×4本
(以下、別売)
単3形充電式ニッケル水素電池×4本
単3形リチウム乾電池×4本
専用DCカプラーCP-04
HP商品ページ商品ページ

ソニー、カシオ、リコー、ニコン、富士フィルムのどのカメラも同じ?裏面照射型というCMOSセンサを用いているので、やはり、この5機種は気になるところ。

裏面照射型というセンサは詳しくは各社のHPに記載されていますが、従来のCMOSセンサよりも感度が良いらしい。
しかも高速撮影が可能なので、それぞれのメーカで連写の特性を生かした機能が搭載されている。

動画のソニー、連写のカシオ、ニコン、光学ズームの富士フィルムといった位置づけでしょうか?
どのカメラも暗い場所で撮影する時、複数枚撮影して感度を上げた1枚の画像を合成する機能があり、これは使えるかも?
また、富士フィルムのカメラは倍率ばかりに目が行ってしまうが、連写で撮影した画像を用いた後処理が面白い。
動体を画像から除去して背景を抽出したり、逆に動体の軌跡を残してみたり…
動画の画像処理では割と定番の処理がデジカメでできてしまう。
よくあるゴルフスイングチェックのような使い方が出来るのだろうか?
動画合成用の画像撮影時のフレームレートが気になるところ。


番外編
機種名PENTAX Optio W90
外観
発売日 2010 年3月18日
画素数
1210万画素
外径寸法107.5×59×25mm
液晶サイズ2.7型
光 学倍率
5倍
マクロ撮影距離 1cm〜
焦点距離(35mm換算)28〜140mm
F値
F3.5(w)〜F5.5(T)
シャッタースピード 4〜1/1500秒
ISO感度
AUTO/80〜6400
最速連写
手ぶれ補正電子式
動画撮影
1280x720(30fps)
電源 専用リチウムイオン充電池
HP
商品ページ

こちらは裏面照射型のCMOSセンサでは無いのですが、PENTAXのデジカメは最初の5機種とはキャラが全く異なる。
6mの防水だったり、1.2m耐ショックのボディー
1cmマクロ撮影によるデジタル顕微鏡モードがあり、1cmまでカメラを近づけるとカメラ本体の影が映り込むので、なんと3つのLED照明まで付いている。
海や山などのアクティブなシーンで活躍するのはもちろんのこと、工事現場や工場などでも重宝しそうな感じです。
子供づれの家族なんかでも、カメラを落としても安心なので、良いかもしれませんね。
特にデジタル顕微鏡モードは、小さな部品を扱う組み立て現場などでは、品質管理などで使えそう…

結論


仕様をずらずら並べてみましたが、今のところFUJIFILMのカメラにひかれている感じ。
光学倍率、動画の画像処理機能、単3電池で動くというのも旅先での入手性を思うと、ありがたい。
ただ、本体サイズが少し大きいので、カシオのカメラも捨てがたい。ソニーのGPS機能も欲しいし...
カシオのカメラに動画処理機能が搭載されていればいいのに。
動画処理機能は自分でも作れるかな?
Loading...



現在の閲覧者数: / 合計