ページ 11

OpenCVでのRAW画像読み込み、保存方法について

Posted: 2013年1月05日(土) 17:54
by ちゅん
初心者ですが、宜しくお願い致します。

ただ今、OpenCVにて、RAW画像を読み込み、その画像を平滑化し、その平滑化した画像をRAWで保存するプログラムを作成中です。
しかし、どうしても、RAW画像を読み込むプログラムを作成することができません。

また、現在0000.rawから0200.rawの連番の画像を一気に読み込みたいと考えております。
    原画像0000.rawから2種類の平滑化画像(0000.raw,0001.raw)を作成、
    原画像0001.rawから2種類の平滑化画像(0002.raw,0003.raw)を作成、
    原画像0002.rawから2種類の平滑化画像(0004.raw,0005.raw)を作成・・・
    のような感じでございます。

もし、詳しい方がいらっしゃいましたら、ご享受お願い致します。
※画像のサイズは全て240×360です。

_________________________________
途中まで作成したプログラムを一応貼らせていただきます。
(cv::imreadがraw未対応のため利用できませんでしたが、jpgでしたら動きました。)
どうぞ宜しくお願い致します。

コード:

 
#include "opencv2\\opencv.hpp"
#include<opencv2/core/core.hpp>
#include<opencv2/imgproc/imgproc.hpp>
#include<opencv2/highgui/highgui.hpp>

#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <cxcore.h>
#include <cv.h>
#include <math.h>
#include <highgui.h>
#include <fstream>
#include <direct.h>
#include <vector>

int main(int argc, char *argv)

{
cv::Mat image = cv::imread("../0000.jpg",1);  // 0000.jpg という画像を読み込み
if(!image.data) return -1;

cv::Mat dst_img1,dst_img2;

//ガウシアンを用いた平滑化
//入力画像、出力画像、カーネルサイズ、標準偏差
cv::GaussianBlur(image, dst_img1, cv::Size(7,1),0,0);  //平滑化1種類目
cv::GaussianBlur(image, dst_img2, cv::Size(1,7),0,0);  //平滑化2種類目

cv::imwrite ("../blur1.jpg", dst_img1 );
cv::imwrite ("../blur2.jpg", dst_img2 );

cv::waitKey(0);
return 0;

}
 

Re: OpenCVでのRAW画像読み込み、保存方法について

Posted: 2013年1月05日(土) 18:01
by h2so5
RAW画像というのは決まったフォーマットがあるわけではなく、いろいろな種類があります。
まず使用するRAW画像の仕様がわからないと読み込むことができません。

BMPファイルのように単純にバイナリデータが並んでいる場合であれば cv::imread ではなく、
cv::Mat 構造体のコンストラクタを使ってメモリ上のイメージから直接読み込むのが妥当かと思います。

Re: OpenCVでのRAW画像読み込み、保存方法について

Posted: 2013年1月05日(土) 18:09
by ちゅん
>> h2so5様

返信ありがとうございます!

raw画像を確認したところ「Panasonic raw image」と記してあったのですが、
やはり、これは、imreadは利用できないのでしょうか?!

Re: OpenCVでのRAW画像読み込み、保存方法について

Posted: 2013年1月05日(土) 18:20
by h2so5
言ってしまえばそれは Panasonic の独自規格なので、imreadでは読み込むことができません。
どこかにフォーマットの詳細についての情報があるのかもしれませんが、ない場合は自力で解析するしかないです。

Re: OpenCVでのRAW画像読み込み、保存方法について

Posted: 2013年1月05日(土) 20:11
by ちゅん
>>h2so5 様

やはり、imreadは利用することができないのですね。
ありがとうございます。

ちなみに、他の方法で読み込む方法について、なんでも良いのでアドバイスを頂けないでしょうか?

Re: OpenCVでのRAW画像読み込み、保存方法について

Posted: 2013年1月05日(土) 20:17
by h2so5
一番簡単なのは、現像ソフトでJPEGなどに変換してからimreadで読み込む方法です。

Re: OpenCVでのRAW画像読み込み、保存方法について

Posted: 2013年1月05日(土) 20:22
by ちゅん
>>h2so5 様
なるほど、ソフトを利用するのですね!

ちなみに、sprintfを使ったプログラムでこのRAW画像が読み込めるようなのですが、
sprintfでこのプログラムを作るのは難しいでしょうか?

何から何まで、申し訳ありません。

Re: OpenCVでのRAW画像読み込み、保存方法について

Posted: 2013年1月05日(土) 20:27
by h2so5
意味がよくわかりません。sprintfは読み込み用の関数ではないですよ。
それに、僕は "Panasonic raw image" の仕様を知らないので読み込みが難しいかどうかは分かりません。

Re: OpenCVでのRAW画像読み込み、保存方法について

Posted: 2013年1月05日(土) 20:48
by ちゅん
>> h2so5様

そうですよね、申し訳ありません。
もう少し、考えてみます!

ありがとうございました。