以下、図面を参照して本発明の実施形態を説明する。図1は、本発明の一実施形態に係る画像処理装置を備えた撮像装置の一例としてのデジタルカメラの構成を示すブロック図である。図1に示すデジタルカメラ1は、レンズ交換式のデジタルカメラである。しかしながら、必ずしもレンズ交換式のデジタルカメラである必要はなく、レンズ一体式のデジタルカメラであってもよい。また、撮像機能付き携帯電話機や撮像機能付き携帯端末等であっても本実施形態の技術が適用され得る。
図1に示すデジタルカメラ1は、交換式レンズ100と、カメラ本体200とを有している。交換式レンズ100は、カメラ本体200に対して着脱自在に構成されている。カメラ本体200に交換式レンズ100が装着された場合に、交換式レンズ100は、カメラ本体200と通信自在に接続される。これにより、交換式レンズ100は、カメラ本体200の制御に従って動作可能な状態となる。
交換式レンズ100は、レンズ102と、絞り104と、ドライバ106と、マイクロコンピュータ108と、Flashメモリ110とを有している。
レンズ102は、図示しない被写体からの光束をカメラ本体200内の撮像素子204に集光するための光学系である。レンズ102は、フォーカスレンズ及びズームレンズ等の複数のレンズを有している。絞り104は、開閉自在に構成され、レンズ102を介して入射した光束の量を調整する。ドライバ106は、モータ等を有している。このドライバ106は、マイクロコンピュータ108の制御に従って、レンズ102内のフォーカスレンズやズームレンズをその光軸方向に駆動させたり、絞り104を開閉駆動させたりする。
マイクロコンピュータ108は、交換式レンズ100がカメラ本体200に装着された際にインターフェイス(I/F)112を介してカメラ本体200内のマイクロコンピュータ234と通信自在に接続される。このマイクロコンピュータ108は、マイクロコンピュータ234からの制御に従ってドライバ106を駆動させる。また、マイクロコンピュータ108は、Flashメモリ110に記憶されている交換式レンズ100のレンズ情報等を、I/F112を介してマイクロコンピュータ234に通信する。
Flashメモリ110は、レンズ102の収差情報等のレンズ情報や交換式レンズ100の動作を実行するために必要なプログラム等を記憶している。
カメラ本体200は、メカシャッタ202と、撮像素子204と、アナログ処理部206と、アナログ/デジタル(AD)変換部208と、RAWリサイズ部210と、バス212と、SDRAM214と、AE処理部216と、AF処理部218と、画像処理部220と、被写体検出部222と、表示ドライバ224と、表示部226と、画像圧縮伸張部228と、メモリインターフェイス(I/F)230と、記録媒体232と、マイクロコンピュータ234と、操作部236と、Flashメモリ238とを有している。
メカシャッタ202は、撮像素子204の光電変換面を遮光状態又は露出状態とするように移動自在に構成されている。メカシャッタ202を移動させることにより、撮像素子204の露出時間が調整される。
撮像素子204は、レンズ102を介して集光された被写体からの光束が結像される光電変換面を有している。光電変換面は、複数の画素が2次元状に配置されて構成されている。また、光電変換面の光入射側には、カラーフィルタが設けられている。このような撮像素子204は、光電変換面に結像された光束に対応した像(被写体像)を、その光量に応じた電気信号(以下、画像信号という)に変換して出力する。ここで、撮像素子204は、CCD方式やCMOS方式等の種々の構成の撮像素子が知られている。また、カラーフィルタの色配列もベイヤ配列等の種々の配列が知られている。本実施形態は、撮像素子204の構成が特定の構成に限定されるものではなく、種々の構成の撮像素子を用いることが可能である。また、撮像素子204は、露出時間を電子的に制御する電子シャッタ機能を有していてもよい。以下の説明においては撮像素子204が電子シャッタ機能を有しているものとする。
アナログ処理部206は、撮像素子204により得られた画像信号に対してCDS(相関二重サンプリング)処理やAGC(自動利得制御)処理等のアナログ処理を施す。AD変換部208は、アナログ処理部206においてアナログ処理された画像信号をデジタル信号(以下、RAWデータという)に変換する。ここで、RAWデータとは、画像処理部220における画像処理が施される前の「生の」画像データである。
RAWリサイズ部210は、AD変換部208で得られたRAWデータをリサイズする。リサイズは、補間処理によって行われる。例えば、リサイズ処理として縮小処理が行われる場合、例えば隣接する複数画素の平均値を縮小後の画素のデータとする処理が、RAWデータを構成する各画素に対して行われる。また、リサイズ処理として拡大処理が行われる場合、例えば隣接する複数画素の平均値の画素を隣接画素間に挿入する処理が、RAWデータを構成する各画素に対して行われる。図1に示すように、AD変換部208は、RAWリサイズ部210を介してバス212に接続されているとともに、RAWリサイズ部210を介さずにバス212に接続されている。したがって、本実施形態では、RAWリサイズ部210でリサイズされた後のRAWデータとRAWリサイズ部210でリサイズされる前のRAWデータの両方を取得することができる。また、RAWリサイズ部210は、AD変換部208から出力されたRAWデータをリサイズするのではなく、SDRAM214に記憶されたRAWデータをリサイズするように構成されていてもよい。なお、RAWリサイズ部210で行う補間処理には、上記以外、最近傍補間や線形補間等種種の補間方法を適用できる。
バス212は、カメラ本体200の内部で発生した各種のデータを転送するための転送路である。SDRAM214は、カメラ本体200内部で発生した各種のデータを一時的に記憶するための記憶部である。このSDRAM214は、画像処理部220における画像処理の際のバッファメモリとしても使用される。
AE処理部216は、画像データ(例えばRAWデータ)を用いて被写体輝度を算出する。AF処理部218は、画像データ(例えばRAWデータ)から高周波成分の信号を取り出し、取り出した高周波成分の信号を積算してAF評価値を取得する。
画像処理部220は、RAWデータに対する各種の画像処理を行う。ここで、画像処理部220で行われる画像処理は、画像データの仕上がりやエフェクトを所定のものとするための画像処理である。ここでの仕上がりとは、表示の際の見た目や作風等のことを言う。また、エフェクトとは、表示の際にユーザに所定の印象を与えるエフェクト等のことを言う。このような画像処理部220は、基本画像処理部2201と、特殊画像処理部2202とを有している。
基本画像処理部2201は、画像の表示や記録のために必要な基本的な画像処理を画像データに対して施す。この基本的な画像処理には、例えば、オプティカルブラック(OB)減算処理、ホワイトバランス(WB)補正処理、同時化処理、色再現処理、輝度変更処理、エッジ強調処理、ノイズ低減処理が含まれる。
オプティカルブラック減算処理は、RAWデータの暗電流成分(オプティカルブラック)を減算して除去する処理である。ホワイトバランス補正処理は、RAWデータの各色成分を所定のゲイン量で増幅することにより、画像の色バランスを補正する処理である。同時化処理は、ベイヤ配列に対応して撮像素子204を介して出力されるRAWデータ等の、1つの画素が1つの色成分に対応している画像データを、1つの画素が複数の色成分に対応しているRGBデータに変換する処理である。色再現処理は、画像の色再現を適切なものとするための各種の処理である。この処理としては、例えばカラーマトリクス演算処理がある。このカラーマトリクス演算処理は、RGBデータに対して、例えばホワイトバランスモードに応じたカラーマトリクス係数を乗じる処理である。この他、色再現処理として彩度・色相の補正も行う。輝度変更処理は、RGBデータをYC(輝度・色差)データに変換し、Yデータの輝度特性を、表示や記録に適するように変更する処理である。輝度変更処理として、RGBデータの輝度特性を変更するようにしてもよい。エッジ強調処理は、画像データ(RAWデータ、RGBデータ又はYCデータ)からバンドパスフィルタ等を用いて抽出したエッジ信号にエッジ強調係数を乗じ、この結果をもとの画像データに加算することによって、画像データにおけるエッジ(輪郭)成分を強調する処理である。ノイズ低減処理は、コアリング処理等により、画像データ(RGBデータ又はYCデータ)におけるノイズ成分を除去する処理である。
特殊画像処理部2202は、画像データ(RGBデータ又はYCデータ)に対して特殊な視覚効果を与えるための特殊画像処理を施す。本実施形態における特殊画像処理部2202は、特殊画像処理として少なくともノイズエフェクトを付加する処理を行う。ノイズエフェクトは、画像に所定のノイズを付加することによってユーザに所定の印象(例えばフィルム撮影により得られた画像であるかのような印象)を与えるエフェクトである。ノイズエフェクトを付加する処理を行うため、特殊画像処理部2202は、乱数の種生成部2202aと、擬似乱数生成部2202bと、切り出し位置算出部2202cと、合成部2202dとを有している。乱数の種生成部2202aは、擬似乱数系列を初期化するための乱数の種(Random seed)を生成する。擬似乱数生成部2202bは、擬似乱数生成器を有し、乱数の種生成部2202aで生成された乱数の種に基づいて擬似乱数系列を生成する。ここで、擬似乱数系列は、擬似的なランダム性を有する系列であって、同一の乱数の種からは同一の系列が生成されるという特徴を有する系列である。擬似乱数の生成手法は、線形合同法、XOR shift法、Mersenne Twister法等が知られている。本実施形態では、擬似乱数系列が生成できるのであればその生成手法は特に限定されない。
切り出し位置算出部2202cは、擬似乱数生成部2202bで生成された擬似乱数系列を用いてノイズエフェクトを付加するために必要となる画像データであるスクラッチ画像データ及びノイズ画像データの切り出し位置を算出する。スクラッチ画像データ及びノイズ画像データについては後で詳しく説明する。合成部2202dは、切り出し位置算出部2202cで算出された切り出し位置に従ってスクラッチ画像データ及びノイズ画像データの一部を切り出し、切り出したスクラッチ画像データ及びノイズ画像データを必要に応じて拡大した上でノイズエフェクトを付加する対象の画像データに合成(重畳)する。また、合成部2202dは、ノイズエフェクトを付加するために必要に応じて用いられるホコリ画像データを、ノイズエフェクトを付加する対象の画像データに合成(重畳)する。
被写体検出部222は、画像データ(例えばYCデータ)の中の被写体(例えば人物の顔)を検出する。被写体が顔である場合には、テンプレートマッチング等の周知の顔検出技術を用いて検出を行うことができる。被写体が顔以外であってもテンプレートマッチングや特徴量検出等の周知の手法を用いて検出を行うことができる。
表示ドライバ224は、画像処理部220で得られた画像データ又は画像圧縮伸張部228で伸張して得られる画像データを、表示部226の表示サイズに応じてリサイズし、リサイズした画像データを映像信号に変換して表示部226に出力する。表示部226は、例えば液晶ディスプレイ(LCD)である。表示部226は、表示ドライバ224から入力された映像信号に基づく画像を表示する。
画像圧縮伸張部228は、画像の記録時においては、画像処理部220における画像処理によって得られた画像データに対してJPEG形式やTIFF形式等の静止画圧縮処理又はMPEG形式やH.264形式等の動画圧縮処理を施す。また、画像圧縮伸張部228は、画像の再生時においては、圧縮処理が施された画像データに対して伸張処理を施す。
メモリI/F230は、マイクロコンピュータ234等が記録媒体232にアクセスするためのインターフェイスである。記録媒体232は、例えばカメラ本体200に着脱自在になされたメモリカードである。この記録媒体232は、画像ファイル等を記録する。画像ファイルは、画像圧縮伸張部228によって圧縮された画像データに、ヘッダ情報を付加したファイルである。記録媒体232は、カメラ本体200に固定されていてもよい(着脱できなくてもよい)。
マイクロコンピュータ234は、メカシャッタ202、撮像素子204、表示ドライバ224といったカメラ本体200の各部の動作を統括的に制御する。また、マイクロコンピュータ234は、AE処理部216で演算された被写体輝度を用いてAE処理を行ったり、AF処理部218で演算されたAF評価値を用いてAF処理を行ったりもする。さらに、マイクロコンピュータ234は、交換式レンズ100の装着時には、交換式レンズ100の動作も制御する。
操作部236は、ユーザによって操作される各種の操作部材である。本実施形態における操作部236は、操作部材として、例えば、レリーズボタンと、動画ボタンと、メニューボタンと、再生ボタンと、電源ボタンとを有している。レリーズボタンは、ファースト(1st)レリーズスイッチとセカンド(2nd)レリーズスイッチの2段スイッチを有している。レリーズボタンが半押しされて、ファーストレリーズスイッチがオンされた場合に、マイクロコンピュータ234は、AE処理やAF処理等の撮影準備処理を実行する。また、レリーズボタンが全押しされて、セカンドレリーズスイッチがオンされた場合に、マイクロコンピュータ234は、静止画記録処理を実行する。動画ボタンは、マイクロコンピュータ234に対して動画撮影の実行を指示する。動画ボタンが押された場合、マイクロコンピュータ234は、動画記録処理を実行する。また、動画記録処理の実行中に動画ボタンが押された場合、マイクロコンピュータ234は、動画記録処理を終了する。メニューボタンは、メニュー画面の表示を指示するための操作部である。メニュー画面上において、ユーザは、カメラ本体200の各種の設定を変更することが可能である。本実施形態においては、ユーザは、例えばメニュー画面上において、特殊画像処理モードを設定する。この特殊画像処理モードにより、特殊画像処理部2202で施される特殊画像処理の内容が設定される。再生ボタンは、マイクロコンピュータ234に対して静止画ファイル又は動画ファイルの再生を指示するための操作部である。電源ボタンは、カメラ本体200の電源のオン又はオフを指示するための操作部である。ここで、前述したレリーズボタン、動画ボタン、メニューボタン、再生ボタンと同等の機能をタッチパネルによって実現するようにしてもよい。すなわち、ボタン等の物理的な操作部材がなくともよい。
Flashメモリ238は、例えばホワイトバランス補正用のホワイトバランスゲイン、カラーマトリクス演算用のカラーマトリクス係数、輝度変更用の各種の関数(ガンマ関数)といった画像処理部220の動作に必要なパラメータ等の、カメラ本体200の動作に必要な各種のパラメータを記憶している。ここで、本実施形態におけるFlsahメモリ238は、画像処理部220における特殊画像処理に必要なパラメータとして、スクラッチ画像データと、ノイズ画像データと、ホコリ画像データとを記憶している。さらに、Flashメモリ238は、マイクロコンピュータ234が実行する種々のプログラムも記憶している。
以下、前述したデジタルカメラの動作について説明する。図2は、本実施形態に係るデジタルカメラのメイン動作を示すフローチャートである。図2の動作は、例えば図1に示すデジタルカメラ1の電源がオンされた場合に行われる。
電源オン後において、マイクロコンピュータ234は、初期化処理を行う(ステップS101)。初期化処理において、マイクロコンピュータ234は、自身が有するレジスタに設定されている記録中フラグをOffにする等の処理を行う。記録中フラグは、動画記録中であるか否かを示すフラグである。記録中フラグがOffになっている間は、動画記録中でないことを示す。一方、記録中フラグがOnになっている間は、動画記録中であることを示す。
次に、マイクロコンピュータ234は、ユーザによって操作部236の再生ボタンが押されたか否かを判定する(ステップS102)。ステップS102において、再生ボタンが押されたと判定した場合に、マイクロコンピュータ234は、再生処理を実行する(ステップS103)。再生処理については後で詳しく説明する。
ステップS102において再生ボタンが押されていないと判定した場合に、マイクロコンピュータ234は、カメラ設定をするか否かを判定する(ステップS104)。例えば、ユーザによって操作部236のメニューボタンが押された場合に、マイクロコンピュータ234は、カメラ設定をすると判定する。
ステップS104において、カメラ設定をすると判定した場合に、マイクロコンピュータ234は、表示ドライバ224を制御して表示部226にメニュー画面を表示させた後、カメラ設定処理を実行する(ステップS105)。カメラ設定処理において、マイクロコンピュータ234は、ユーザからのカメラ設定の変更の指示を待つ。そして、何らかのカメラ設定の変更の指示がなされた場合に、マイクロコンピュータ234は、その指示に従ってカメラ設定を変更する。このカメラ設定処理においては、例えば静止画撮影時や動画撮影時の画像の記録形式の設定、ホワイトバランス(WB)モード、コントラスト設定、エッジ強調度(シャープネス)の設定、輝度特性変更の設定(ガンマ設定)等の画像の仕上がりに関する設定が変更される。この他、カメラ設定処理において、特殊画像処理モードの設定、例えばエフェクトの設定が行われてもよい。
ステップS104において、カメラ設定をしないと判定した場合に、マイクロコンピュータ234は、ユーザによって操作部236の動画ボタンが押されたか否かを判定する(ステップS106)。ステップS106において、動画ボタンが押されたと判定した場合に、マイクロコンピュータ234は、記録中フラグを反転させる(ステップS107)。すなわち、マイクロコンピュータ234は、記録中フラグがOffの場合にはOnに、Onの場合にはOffにする。その後、マイクロコンピュータ234は、現在、動画記録中であるか否か、すなわち記録中フラグがOnであるか否かを判定する(ステップS108)。
ステップS108において、記録中フラグがOnであると判定した場合に、マイクロコンピュータ234は、動画ファイルを生成し、動画データを記録できるように準備する(ステップS109)。また、ステップS108において、記録中フラグがOnでないと判定した場合に、マイクロコンピュータ234は、動画ファイルを閉じる(ステップS110)。
ステップS106において動画ボタンが押されていないと判定した場合、ステップS109において動画ファイルを生成した後、ステップS110において動画ファイルを閉じた後、マイクロコンピュータ234は、エフェクト設定処理を行う(ステップS111)。エフェクト設定処理については後で説明する。
エフェクト設定処理の後、マイクロコンピュータ234は、現在、動画記録中であるか否か、すなわち記録中フラグがOnであるか否かを再び判定する(ステップS112)。ステップS112において、記録中フラグがOffであると判定した場合に、マイクロコンピュータ234は、ユーザによって操作部236のレリーズボタンが半押しされてレリーズボタンの状態がOff状態から1stレリーズスイッチのOn状態に遷移したか否かを判定する(ステップS113)。
ステップS113において、レリーズボタンの状態が1stレリーズスイッチのOn状態に遷移したと判定した場合に、マイクロコンピュータ234は、AE処理及びAF処理を行う(ステップS114)。AE処理において、マイクロコンピュータ234は、AE処理部216によって被写体輝度を算出させる。その後、マイクロコンピュータ234は、AE処理部216によって算出された被写体輝度に応じて静止画撮影の実行時におけるシャッタ速(Tv値)、絞り値(Av値)、ISO感度を決定する。ここで、被写体検出部222で検出された被写体の輝度が適正となるようにシャッタ速、絞り値、ISO感度を決定するようにしてもよい。また、AF処理において、マイクロコンピュータ234は、AF処理部218によってAF評価値を取得させる。そして、マイクロコンピュータ234は、AF処理部218で取得されたAF評価値により、コントラストを評価しつつ、レンズ102のフォーカスレンズを微少量ずつ駆動させるようにマイクロコンピュータ108に指示する。その後、マイクロコンピュータ234は、コントラストが最大となった時点でフォーカスレンズの駆動を停止させるようにマイクロコンピュータ108に指示する。このようなAF処理は、所謂コントラスト方式のAF処理である。AF処理として位相差AF処理を用いるようにしてもよい。また、被写体検出部222で検出された被写体にフォーカスが合うようにしてもよい。
AE処理及びAF処理の後、マイクロコンピュータ234は、デジタルカメラ1の電源がオフされたか否かを判定する(ステップS115)。ステップS115において、デジタルカメラ1の電源がオフされていないと判定した場合に、マイクロコンピュータ234は、ステップS102以後の処理を実行する。一方、ステップS115において、デジタルカメラの電源がオフされたと判定した場合に、マイクロコンピュータ234は、図2の処理を終了させる。
ステップS113において、レリーズボタンの状態が1stレリーズスイッチのOn状態に遷移していないと判定した場合に、マイクロコンピュータ234は、ユーザによって操作部236のレリーズボタンが全押しされてレリーズボタンの状態が2ndレリーズスイッチのOn状態となっているか否かを判定する(ステップS116)。
ステップS116において、レリーズボタンの状態が2ndレリーズスイッチのOn状態である場合に、マイクロコンピュータ234は、メカシャッタ202を用いた撮影処理を実行する(ステップS117)。このために、マイクロコンピュータ234は、AE処理において決定されるISO感度に応じてアナログ処理部206におけるゲイン制御量(増幅率)を設定するとともに、AE処理において決定されるF値をマイクロコンピュータ108に送信する。その後、マイクロコンピュータ234は、マイクロコンピュータ108の制御による絞り104の駆動と同期して、AE処理において決定した露出時間に応じてメカシャッタ202を動作させて撮像素子204の露出を制御する。このような撮影処理により、RAWデータがSDRAM214に記憶される。
メカシャッタ202を用いた撮影処理を実行した後、マイクロコンピュータ234は、撮影処理によってSDRAM214に記憶されたRAWデータに対する画像処理を、画像処理部220に実行させる(ステップS118)。画像処理の詳細については後で説明する。
画像処理の後、マイクロコンピュータ234は、画像処理の結果としてSDRAM214に記憶された画像データを、設定されている静止画記録形式で静止画ファイルとして記録する処理を行う(ステップS119)。この際、マイクロコンピュータ234は、SDRAM214に記憶された画像データを画像圧縮伸張部228に入力して静止画圧縮処理を実行するように画像圧縮伸張部228に指示する。この指示を受けて画像圧縮伸張部228は、予め設定された記録モードに対応するように静止画圧縮処理を行い、圧縮された画像データをSDRAM214に記憶させる。その後、マイクロコンピュータ234は、画像圧縮伸張部228により圧縮された画像データをSDRAM214から読み出し、読み出した画像データから静止画ファイルを作成し、作成した静止画ファイルを記録媒体232に記録する。
ステップS116においてレリーズボタンの状態が2ndレリーズスイッチのOn状態でないと判定した場合に、マイクロコンピュータ234は、AE処理を実行する(ステップS120)。このAE処理は、動画撮影又はライブビュー表示のための処理である。AE処理の後、マイクロコンピュータ234は、電子シャッタを用いた撮影処理を実行する(ステップS121)。この撮影処理において、マイクロコンピュータ234は、AE処理によって決定した露出時間に応じて撮像素子204の電子シャッタ機能を動作させて撮像素子204の露出を制御する。このような撮影処理により、RAWデータがSDRAM214に記憶される。
電子シャッタを用いた撮影処理を実行した後、マイクロコンピュータ234は、撮影処理によってSDRAM214に記憶されたRAWデータに対する画像処理を、画像処理部220に実行させる(ステップS122)。画像処理の詳細については後で説明する。
画像処理の後、マイクロコンピュータ234は、ライブビュー表示を行う(ステップS123)。ライブビュー表示において、マイクロコンピュータ234は、画像処理の結果としてSDRAM214に記憶された画像データを表示ドライバ224に入力する。これを受けて表示ドライバ224は、入力された画像データを映像信号に変換して表示部226に出力する。表示部226は、この映像信号に基づいて画像を表示する。このようなライブビュー表示により、ユーザは、表示部226を用いて構図の確認等を行うことができる。
ライブビュー表示の後、マイクロコンピュータ234は、現在、動画記録中であるか否か、すなわち記録中フラグがOnであるか否かを判定する(ステップS124)。ステップS124において、記録中フラグがOnであると判定した場合に、マイクロコンピュータ234は、ステップS125の処理をスキップする。ステップS124において、記録中フラグがOnであると判定した場合に、マイクロコンピュータ234は、画像処理の結果としてSDRAM214に記憶された画像データを、設定されている動画記録形式で動画ファイルとして記録する処理を行う(ステップS125)。この際、マイクロコンピュータ234は、SDRAM214に記憶された動画データを画像圧縮伸張部228に入力して動画圧縮処理を実行するように画像圧縮伸張部228に指示する。この指示を受けて画像圧縮伸張部228は、予め設定された記録モードに対応するように動画圧縮処理を行い、圧縮された動画データをSDRAM214に記憶させる。その後、マイクロコンピュータ234は、画像圧縮伸張部228により圧縮された動画データをSDRAM214から読み出し、読み出した動画データを先に生成した動画ファイルに追記する。また、動画データの記録が終了した場合には、動画ファイルのヘッダ記録部にフレーム数等の情報を記録する。
図3は、エフェクト設定処理について示すフローチャートである。エフェクト設定において、ユーザは、画像(静止画又は動画或いはライブビュー)に付加するエフェクトの内容を設定する。このエフェクトの設定に応じて、後で説明する特殊画像処理の際に画像に対してエフェクトが付加される。
図3において、マイクロコンピュータ234は、画像にフィルムノイズエフェクトを付加するようにユーザによって指示されたか否かを判定する(ステップS201)。ユーザは、例えばカメラ設定処理と同様のメニュー画面上でフィルムノイズエフェクトを付加する旨の指示をする。ステップS201において、フィルムノイズエフェクトを付加するようにユーザによって指示されていないと判定した場合、マイクロコンピュータ234は、ステップS202の処理をスキップする。ステップS201において、フィルムノイズエフェクトを付加するようにユーザによって指示されたと判定した場合に、マイクロコンピュータ234は、フィルムノイズエフェクトを付加するように画像処理部220(特殊画像処理部2202)を設定する(ステップS202)。
続いて、マイクロコンピュータ234は、画像にシェーディングエフェクトを付加するようにユーザによって指示されたか否かを判定する(ステップS203)。ステップS203において、シェーディングエフェクトを付加するようにユーザによって指示されていないと判定した場合、マイクロコンピュータ234は、ステップS204の処理をスキップする。ステップS203において、シェーディングエフェクトを付加するようにユーザによって指示されたと判定した場合に、マイクロコンピュータ234は、特殊画像処理の際にシェーディングエフェクトを付加するように画像処理部220(特殊画像処理部2202)を設定する(ステップS204)。
続いて、マイクロコンピュータ234は、画像に粒子ノイズエフェクトを付加するようにユーザによって指示されたか否かを判定する(ステップS205)。ステップS205において、粒子ノイズエフェクトを付加するようにユーザによって指示されていないと判定した場合、マイクロコンピュータ234は、ステップS206の処理をスキップする。ステップS205において、粒子ノイズエフェクトを付加するようにユーザによって指示されたと判定した場合に、マイクロコンピュータ234は、特殊画像処理の際に粒子ノイズエフェクトを付加するように画像処理部220(特殊画像処理部2202)を設定する(ステップS206)。その後、マイクロコンピュータ234は、図3の処理を終了させる。
図4は、画像処理について示すフローチャートである。画像処理が開始されると、基本画像処理部2201は、SDRAM214に記憶されているRAWデータに対して基本画像処理を施す(ステップS301)。その後、特殊画像処理部2202は、基本画像処理の結果としてSDRAM214に記憶されている画像データ(YCデータ)に対して特殊画像処理を施す(ステップS302)。これにより、画像処理が終了される。以下、基本画像処理と特殊画像処理とを詳しく説明する。
図5は、基本画像処理について示すフローチャートである。基本画像処理の開始後、基本画像処理部2201は、OB減算処理を行う(ステップS401)。OB減算処理において、基本画像処理部2201は、入力されたRAWデータからオプティカルブラック(OB)値を減算することでRAWデータにおける暗電流成分を除去する。
OB減算の後、基本画像処理部2201は、WB補正処理を行う(ステップS402)。WB補正処理において、基本画像処理部2201は、OB減算処理が施されたRAWデータに対して、予めユーザが設定したWBモードに応じたWBゲインを乗じることで画像としての色バランスを補正する。ユーザがオートWBモードを設定している場合には、基本画像処理部2201は、撮影したRAWデータを解析して、推定した光源に応じたWBゲインを乗じる。
WB補正処理の後、基本画像処理部2201は、RAWデータの形式がベイヤ形式の場合には、同時化処理を行う(ステップS403)。同時化処理において、基本画像処理部2201は、WB補正がなされたRAWデータを、補間処理を用いて同時化する。これにより、1画素がRGBのうちの1つの色成分を有しているRAWデータを1画素がRGB3つの色成分を有するRGBデータに変換する。
同時化処理の後、基本画像処理部2201は、色再現処理を行う(ステップS404)。色再現処理において、基本画像処理部2201は、設定されているWBモードに応じたカラーマトリクス係数をRGBデータの各画素に乗じることでRGBデータの色変換をする。さらに、基本画像処理部2201は、色変換したRGBデータの色相及び彩度が適切なものとなるように色を補正することにより、画像の色再現を調整する。
色再現処理の後、基本画像処理部2201は、輝度変更処理を行う(ステップS405)。輝度変更処理において、基本画像処理部2201は、色再現処理がされたRGBデータをガンマ変換し、さらにガンマ変換したRGBデータをYC(輝度・色差)データに変換した後、さらにYデータをガンマ変換する。RGB又はYデータの何れかのみガンマ変換するようにしてもよい。
輝度変更処理の後、基本画像処理部2201は、エッジ強調処理を行う(ステップS406)。エッジ強調処理において、基本画像処理部2201は、輝度変更処理後のYデータに対し、バンドパスフィルタ処理を施してエッジ信号を抽出し、抽出したエッジ信号にエッジ強調量に応じた係数を乗じる。そして、基本画像処理部2201は、係数を乗じたエッジ成分をもとのYデータに加算することで画像のエッジ成分を強調する。
エッジ強調処理の後、基本画像処理部2201は、ノイズ低減(NR)処理を行う(ステップS407)。その後に基本画像処理部2201は、図5の処理を終了させる。ノイズ低減処理において、基本画像処理部2201は、エッジ強調処理がされたYデータを周波数分解し、周波数に応じてコアリング処理等を施して画像におけるノイズ成分を低減させる。Cbデータ及びCrデータに対してノイズ成分を低減させてもよい。ノイズ低減処理後のデータは、記録形式がTIFF形式の場合には所定のマトリクス演算を行って再度RGB形式に変換する。
図6は、特殊画像処理について示すフローチャートである。図6は、特殊画像処理として、フィルムノイズエフェクトの付加処理、シェーディングエフェクトの付加処理、粒子ノイズエフェクトの付加処理を行う例を示している。特殊画像処理において、図6で示した以外の特殊画像処理、例えばぼかし処理等を併せて行えるようにしてもよい。
図6において、特殊画像処理部2202は、フィルムノイズエフェクトを付加するように設定されているか否かを判定する(ステップS501)。ステップS501において、フィルムノイズエフェクトを付加するように設定されていないと判定した場合に、特殊画像処理部2202は、ステップS502の処理をスキップする。ステップS501において、フィルムノイズエフェクトを付加するように設定されていると判定した場合、マイクロコンピュータ234は、画像データ(YCデータ)に対してフィルムノイズエフェクトを付加する処理を行う(ステップS502)。この処理については後で詳しく説明する。
続いて、特殊画像処理部2202は、シェーディングエフェクトを付加するように設定されているか否かを判定する(ステップS503)。ステップS503において、シェーディングエフェクトを付加するように設定されていないと判定した場合に、特殊画像処理部2202は、ステップS504の処理をスキップする。ステップS503において、シェーディングエフェクトを付加するように設定されていると判定した場合、マイクロコンピュータ234は、画像データ(YCデータ)に対してシェーディングエフェクトを付加する処理を行う(ステップS504)。この処理については後で詳しく説明する。
続いて、特殊画像処理部2202は、粒子ノイズエフェクトを付加するように設定されているか否かを判定する(ステップS505)。ステップS505において、粒子ノイズエフェクトを付加するように設定されていないと判定した場合に、特殊画像処理部2202は、ステップS506の処理をスキップして図6の処理を終了させる。ステップS505において、粒子ノイズエフェクトを付加するように設定されていると判定した場合、マイクロコンピュータ234は、画像データ(YCデータ)に対して粒子ノイズエフェクトを付加する処理を行う(ステップS506)。その後、特殊画像処理部2202は、図6の処理を終了させる。粒子ノイズエフェクトを付加する処理については後で詳しく説明する。
次に、フィルムノイズエフェクトの付加処理について説明する。フィルムノイズエフェクトの付加処理の詳細を説明する前に、スクラッチ画像データ、ノイズ画像データ、ホコリ画像データについて説明する。図7は、スクラッチ画像データを示す図である。図8は、ノイズ画像データを示す図である。図9は、ホコリ画像データを示す図である。スクラッチ画像データ、ノイズ画像データ、ホコリ画像データは、何れもフィルム撮影をしたときに生じ得る特有のノイズをパターン化した画像データである。また、これらのスクラッチ画像データ、ノイズ画像データ、ホコリ画像データのサイズは、所定のサイズ(例えば1980×1080画素)の画像データを基準にして決められている。
スクラッチ画像データは、図7に示すように、長さの異なる複数のスジ状パターンをランダムに配列することによって構成されている。縦方向のスジ状パターンを配列したスクラッチ画像データを画像データ(YCデータ)に重畳した場合、フィルムを縦方向に移動させたときに生じるスクラッチに起因するノイズが画像データ上で再現される。ここで、図7に代えて横方向のスジ状パターンを配列してもよい。横方向のスジ状パターンを配列したスクラッチ画像データを画像データ(YCデータ)に重畳した場合、フィルムを横方向に移動させたときに生じるスクラッチに起因するノイズが画像データ上で再現される。スクラッチ画像データは、スジ状パターンに沿った方向(図7では縦方向)に相関が高い画像データである。このため、スクラッチ画像データを相関が高い方向(図7では縦方向)に縮小(例えば1980×1080画素の画像データを基準にしてスクラッチ画像データのサイズが決められている場合には1/8〜1/6程度)し、この縮小したスクラッチ画像データを拡大することにより得られるスクラッチ画像データは、縮小をしていない元のスクラッチ画像データとの間の相関が高い。すなわち、スクラッチ画像データは、縮小されてもその後に拡大すれば問題なく利用できる。このため、Flashメモリ238には、縮小後のスクラッチ画像データを記憶させておくことが望ましい。縮小後のスクラッチ画像データをFlashメモリ238に記憶させるようにすれば、Flashメモリ238の容量を節約することができる。また、実際に重畳を行うまで縮小状態のスクラッチ画像データを用いて処理を行うことにより、SDRAM214の帯域を節約することも可能である。
ノイズ画像データは、図8に示すように、粒子状パターンをランダムに2次元方向に配置することによって構成されている。ノイズ画像データを画像データ(YCデータ)に重畳した場合、フィルム撮影におけるフィルム現像段階に生じたゴミ等に起因するノイズが画像データ上で再現される。ノイズ画像データにおける粒状パターンは、縦方向にも横方向にもランダムに配置されている。したがって、ノイズ画像データは、スクラッチ画像データとは異なり、特定の方向に相関がある画像データではない。このため、Flashメモリ238には、縮小をしていないノイズ画像データを記憶させておくことが望ましい。ただし、Flashメモリ238の容量やSDRAM214の帯域との関係により、ノイズ画像データを縮小する必要がある場合には、縦方向と横方向とで同じ縮小率でノイズ画像データを縮小することが望ましい。
ホコリ画像データは、図9に示すように、ホコリによるノイズをパターン化した画像データである。図9の例では、ホコリ画像データは、4つの異なるパターンのホコリの画像データA〜Dとホコリなしの画像データEとの5つのパターンの画像データを含む。これら5つのパターンの画像データの中からランダムに1つが選択されて画像データ(YCデータ)に重畳される。ホコリ画像データを画像データ(YCデータ)に重畳した場合、フィルム撮影の際にフィルム表面に付着したホコリに起因するノイズが画像データ上で再現される。ここで、図9は、ホコリ画像データが5つのパターンの画像データを有している例を示している。ホコリ画像データとして記憶させておくパターンの数は5つに限るものではない。
図10は、フィルムノイズエフェクトの付加処理の処理を示すフローチャートである。図10において、特殊画像処理部2202は、乱数の種生成部2202a及び擬似乱数生成部2202bにより、フィルムノイズを付加するために必要となる擬似乱数を取得する(ステップS601)。図10に示す処理では、例として、10個の擬似乱数(R[0]〜R[9])を取得するものとする。ここで、擬似乱数R[0]〜R[9]は、0から乱数最大値MAXの範囲の値を有する。擬似乱数R[0]〜R[9]の具体的な取得の仕方については後で説明する。
擬似乱数R[0]〜R[9]の取得後、特殊画像処理部2202は、画像データ(YCデータ)に重畳するスクラッチ画像データの切り出し位置を大きく(ランダムに)更新するか否かを判定する(ステップS602)。ここで、切り出し位置は、スクラッチ画像データの切り出し範囲を決めるための基準となる位置であって、例えばスクラッチ画像データの左上の座標である。本実施形態においては、スクラッチ画像データを重畳する際にスクラッチ画像データの切り出し範囲をランダムに更新することによってスクラッチに起因するノイズのランダム性を再現する。ステップS602においては、フィルムノイズエフェクトを付加する対象の画像データが静止画データである場合には、常にYesと判定されることとする。また、フィルムノイズエフェクトを付加する対象の画像データが静止画データでない場合(例えば動画データやライブビュー表示用の画像データ)には、最初のフレームに対応する判定時にはYesと判定され、その後のフレームに対応する判定時にはランダムでYesと判定されることとする。例えば、擬似乱数R[0]が、切り出し位置を更新してからのフレーム数によって変化するスレッシュ以上となった場合にYesと判定されることとする。
図11は、ステップS602の判定に用いられるスレッシュのフレーム数との関係の一例を示す図である。図11の横軸は、切り出し位置が更新されたフレームを0としたときの、経過フレーム数を示している。また、図11の縦軸は、スレッシュの値を示している。図11の例では、0フレーム目から14フレーム目までは、スレッシュが擬似乱数R[0]の最大値よりも大きくなるようになっている。したがって、更新が行われてからの14フレーム目までは、ステップS602において必ずNoと判定される。また、15フレームから29フレーム目までは、擬似乱数R[0]の値によってYesと判定されるかNoと判定されるかが分岐する。すなわち、更新が行われてからの15フレーム目から29フレーム目までは、切り出し位置を更新するか否かがランダムに決定される。また、30フレーム目ではスレッシュが擬似乱数R[0]の最小値(図の例では0)となるようになっている。したがって、更新が行われてから30フレームの間に更新が行われなかった場合には、ステップS602において必ずYesと判定される。スクラッチは流れるスジ状のノイズであるほうがユーザに与える違和感が小さい。したがって、図11で示したようにして頻繁にはスクラッチ画像データの切り出し位置の更新が行われないようにしつつ、時々には切り出し位置が変更されるようにする。これにより、実際のスクラッチに起因するノイズと同様のノイズを画像データ上で再現する。ここで、図11の関係は一例であって適宜変更され得る。
ステップS602において、切り出し位置を更新すると判定した場合に、特殊画像処理部2202は、切り出し位置算出部2202cにより、スクラッチ画像データの切り出し位置を更新する(ステップS603)。例えば、切り出し位置の左上のX座標を擬似乱数R[1]で示される位置に更新し、切り出し位置の左上のY座標を擬似乱数R[2]で示される位置に更新する。ここで、擬似乱数R[1]は、例えば最小値がスクラッチ画像データの左端に切り出し範囲の左端が接するときの切り出し範囲の左上の座標に対応しており、最大値がスクラッチ画像データの右端に切り出し範囲の右端が接するときの切り出し範囲の左上の座標に対応している。また、擬似乱数R[2]は、例えば最小値がスクラッチ画像データの上端に切り出し範囲の上端が接するときの切り出し範囲の左上の座標に対応しており、最大値がスクラッチ画像データの下端に切り出し範囲の下端が接するときの切り出し範囲の左上の座標に対応している。さらに、スクラッチ画像データの切り出し範囲のサイズは、例えば縦方向が合成対象の画像データの縮小率倍であり、横方向が合成対象の画像データと同じサイズである。
図12(a)は、切り出し位置の更新の概要を示している。図12(a)の破線枠が更新前の切り出し範囲を示し、図12(a)の一点鎖線枠が更新後の切り出し範囲を示している。切り出し位置の更新は、図12(a)に示すように、更新前の切り出し位置(Xp,Yp)を更新後の切り出し位置(x,y)に更新することで行われる。このx及びyは例えば以下の(式1)に従って与えられる。なお、(式1)のXmaxは横方向の最大値を示し、Xminは横方向の最小値を示す。また、(式1)のYmax縦方向の最大値を示し、Yminは縦方向の最小値を示す。
x=R[1]÷MAX×(Xmax−Xmin)+Xmin
y=R[2]÷MAX×(Ymax−Ymin)+Ymin (式1)
ステップS602において、切り出し位置を更新しないと判定した場合に、特殊画像処理部2202は、擬似乱数R[2](すなわち切り出し位置のY座標)が乱数最大値MAX×0.9以下であるか否かを判定する(ステップS604)。ステップS604において、擬似乱数R[2]が乱数最大値MAX×0.9以下であると判定した場合に、特殊画像処理部2202は、スクラッチ画像データの切り出し位置の微修正を行う(ステップS605)。切り出し位置の微修正に際しては、図12(b)に示すように、更新前の切り出し位置と更新後の切り出し位置との距離が離れないように、すなわち更新前の切り出し位置の近傍に限定した範囲で切り出し位置を修正する。このとき、切り出し位置は、縦方向については一定間隔で上方向に向けて変化させ、横方向についてはランダムに変化させる。また、縦方向については、切り出し位置が上端まで達した場合、次回の修正時には、図12(c)に示すように、切り出し位置を下端に修正する。このような修正をする場合の修正後の切り出し位置(x,y)は、例えば以下の(式2)に従って与えられる。
x=Xp+((R[1]−MAX/2)/MAX)×J
y=Yp−K (式2)
ここで、Jは、設計時に決められるスジ状パターンの横方向の基本移動速度(pixel/frame)である。例えば、Jは5である。また、Kは、設計時に決められるスジ状パターンの縦方向の移動速度(pixel/frame)である。例えば、Kは10である。さらに、(式2)の計算の結果、xが横方向の最小値よりも小さくなった場合には、xを横方向の最小値にクリップする。逆に、(式2)の計算の結果、xが横方向の最大値よりも大きくなった場合には、xを横方向の最大値にクリップする。さらに、(式2)の計算の結果、yが縦方向の最小値以下となったとき、すなわち切り出し位置が上端に達したときには、次のフレームにおいてyを縦方向の最大値(すなわち下端位置)に修正する。(式2)により、切り出し位置のX座標は、1フレーム毎にランダムに5画素(Xp±2.5画素)の範囲で変更される。また、切り出し位置のY座標は、1フレーム毎に10画素分ずつ上方向に変更される。
ステップS604において、擬似乱数R[2]が乱数最大値MAX×0.9以下でないと判定した場合に、特殊画像処理部2202は、ステップS604の処理をスキップして処理をステップS606に移行させる。なお、ステップS604の処理をスキップする条件は、上述以外のスレッシュでもよく、また、常にスキップしないようにしてもよい。
続いて、特殊画像処理部2202は、画像データ(YCデータ)に重畳するノイズ画像データの切り出し位置を更新するか否かを判定する(ステップS606)。本実施形態においては、ノイズ画像データを重畳する際にその切り出し範囲をランダムに更新することによってゴミ等に起因するノイズのランダム性を再現する。この切り出し範囲を更新するか否かの判定がステップS606の判定である。ステップS606においては、フィルムノイズエフェクトを付加する対象の画像データが静止画データである場合には、常にYesと判定されることとする。また、フィルムノイズエフェクトを付加する対象の画像データが静止画データでない場合には、最初のフレームに対応する判定時にはYesと判定され、その後のフレームに対応する判定時にはランダムでYesと判定されることとする。例えば、擬似乱数R[3]が、切り出し位置を更新してからのフレーム数によって変化するスレッシュ以上となった場合にYesと判定されることとする。
図13は、ステップS606の判定を行うためのフレーム数とスレッシュとの関係の一例を示す図である。図13の横軸は、切り出し位置が更新されたフレームを0としたときの、経過フレーム数を示している。また、図13の縦軸は、スレッシュの値を示している。図13の例では、0フレーム目から所定フレーム目(図の例では7フレーム目)にかけてスレッシュが減少するようになっている。そして、所定フレーム目から10フレーム目まではスレッシュが擬似乱数R[3]の最小値(図の例では0)となるようになっている。したがって、更新が行われてから所定フレームの間に更新が行われなかった場合には、ステップS606において必ずYesと判定される。図11とは異なり、図13は、スレッシュが乱数最大値を超える期間がない。このため、ノイズ画像データの切り出し位置は、スクラッチ画像データと比較して頻繁に変更される。ここで、図13の関係は一例であって適宜変更され得る。
ステップS606において、切り出し位置を更新しないと判定した場合に、特殊画像処理部2202は、ステップS606の処理をスキップする。ステップS606において、切り出し位置を更新すると判定した場合に、特殊画像処理部2202は、切り出し位置算出部2202cにより、ノイズ画像データの切り出し位置を更新する(ステップS607)。例えば、切り出し位置の左上のX座標を擬似乱数R[4]で示される位置に更新し、切り出し位置の左上のY座標を擬似乱数R[5]で示される位置に更新する。ここで、擬似乱数R[4]は、例えば最小値がノイズ画像データの左端に切り出し範囲の左端が接するときの切り出し範囲の左上の座標に対応しており、最大値がノイズ画像データの右端に切り出し範囲の右端が接するときの切り出し範囲の左上の座標に対応している。また、擬似乱数R[5]は、例えば最小値がノイズ画像データの上端に切り出し範囲の上端が接するときの切り出し範囲の左上の座標に対応しており、最大値がノイズ画像データの下端に切り出し範囲の下端が接するときの切り出し範囲の左上の座標に対応している。さらに、ノイズ画像データの切り出し範囲のサイズは、例えば合成対象の画像データと同じサイズである。
図14は、切り出し位置の更新の概要を示している。図14の破線枠が更新前の切り出し範囲を示し、図14の一点鎖線枠が更新後の切り出し範囲を示している。ノイズ画像データの切り出し位置の更新は、スクラッチ画像データと同様、更新前の切り出し位置(Xp,Yp)を更新後の切り出し位置(x,y)に更新することで行われる。このx及びyは例えば以下の(式3)に従って与えられる。
x=R[4]÷MAX×(Xmax−Xmin)+Xmin
y=R[5]÷MAX×(Ymax−Ymin)+Ymin (式3)
続いて、特殊画像処理部2202は、画像データ(YCデータ)に重畳するホコリ画像データを更新するか否かを判定する(ステップS608)。ステップS608においては、フィルムノイズエフェクトを付加する対象の画像データが静止画データである場合には、常にYesと判定されることとする。また、フィルムノイズエフェクトを付加する対象の画像データが静止画データでない場合には、最初のフレームに対応する判定時にはYesと判定され、その後のフレームに対応する判定時にはランダムでYesと判定されることとする。例えば、擬似乱数R[6]が、切り出し位置を更新してからのフレーム数によって変化するスレッシュ以上となった場合にYesと判定されることとする。
図15は、ステップS608の判定を行うためのフレーム数とスレッシュとの関係の一例を示す図である。図15の横軸は、切り出し位置が更新されたフレームを0としたときの、経過フレーム数を示している。また、図15の縦軸は、スレッシュの値を示している。図15の例では、0フレーム目から10フレーム目までにかけてスレッシュが線形に減少するようになっている。この場合、10フレーム目までに更新が行われなかった場合には、ステップS608において必ずYesと判定される。図15も、スレッシュが乱数最大値を超える期間がない。このため、ホコリ画像データの切り出し位置は、スクラッチ画像データと比較して頻繁に変更される。ここで、図15の関係は一例であって適宜変更され得る。
ステップS608において、ホコリ画像データを更新すると判定した場合に、特殊画像処理部2202は、ホコリ画像データを更新する(ステップS609)。例えば、図9で示したホコリ画像データA〜Eのそれぞれに番号を与えておく。そして、ステップS609においては、現在選択中のホコリ画像データを、擬似乱数R[7]で示される番号のホコリ画像データ(例えば、R[7]を5で割ったときの余りが0であればA、1であればB、2であればC、3であればD、4であればE)に変更する。ホコリ画像データを更新した後、特殊画像処理部2202は、ホコリ画像データの合成位置を変更する(ステップS610)。例えば、合成位置の左上のX座標を擬似乱数R[8]で示される位置に更新し、合成位置の左上のY座標を擬似乱数R[9]で示される位置に更新する。ここで、擬似乱数R[8]は、例えば最小値が合成される画像データの左端の座標に対応しており、最大値が合成される画像データの右端の座標に対応している。また、擬似乱数R[9]は、例えば最小値が合成される画像データの上端の座標に対応しており、最大値が合成される画像データの下端の座標に対応している。図16(a)は、ホコリ画像データの合成位置の更新の概要を示している。図16(a)の破線が更新前のホコリ画像データを示し、図16(a)の一点鎖線枠が更新後のホコリ画像データを示している。図16(a)に示すように、ホコリ画像データの場合には合成位置だけでなく、ホコリ画像データのパターンも変更される。
ステップS608において、ホコリ画像データを更新しないと判定した場合に、特殊画像処理部2202は、ホコリ画像データの合成位置の微修正を行う(ステップS611)。合成位置の微修正に際しては、図16(b)に示すように、更新前の合成位置と更新後の合成位置との距離が離れないように合成位置を修正する。このとき、合成位置は、縦方向と横方向の両方についてランダムに変化させる。修正後の合成位置(x,y)は、例えば以下の(式4)に従って与えられる。
x=Xp+((R[8]−MAX/2)/MAX)×L
y=Yp+((R[9]−MAX/2)/MAX)×M (式4)
ここで、Lは、設計時に決められるホコリ画像データの横方向の基本移動速度(pixel/frame)である。例えば、Lは5である。また、Mは、設計時に決められるホコリ画像データの縦方向の移動速度(pixel/frame)である。例えば、Mは5である。さらに、x及びyはともに横方向又は縦方向の範囲内の値となるようにする。したがって、(式4)の計算の結果、x又はyが横方向又は縦方向の最小値よりも小さくなった場合には、x又はyを横方向又は縦方向の最小値にクリップする。逆に、(式4)の計算の結果、x又はyが横方向又は縦方向の最大値よりも大きくなった場合には、x又はyを横方向又は縦方向の最大値にクリップする。
続いて、特殊画像処理部2202は、合成部2202dにより、スクラッチ画像データ、ノイズ画像データ、ホコリ画像データを、合成対象の画像データに合成する(ステップS612)。その後、特殊画像処理部2202は、図10の処理を終了させる。図17は、合成処理の概要を示す図である。合成をするに際し、まず、スクラッチ画像データのサイズを合成対象の画像データのサイズに合わせることを行う。前述したように、スクラッチ画像データは、相関の高い方向である縦方向に縮小されている。したがって、切り出し後のスクラッチ画像データを縦方向に縮小率の逆数倍だけ拡大することでスクラッチ画像データのサイズを合成対象の画像データのサイズに合わせる。スクラッチ画像データのサイズを合成対象の画像データのサイズに合わせた後、スクラッチ画像データと、ノイズ画像データと、ホコリ画像データとを合成する。合成は、3つの画像データを例えば各画素の値が0(黒)であれば0を、最大(白)であれば1.0を、その他の値であれば明るさに応じて0から1.0の範囲の値を乗算することによって行われる。3つの画像データを合成して合成ノイズ画像データを得た後、合成対象の画像データに合成ノイズ画像データを合成する。この合成も、両画像データを例えば乗算することによって行われる。ここで、合成処理は他の方法でもよく、例えば、画素毎に比較を行い暗い方の値を合成結果とするような合成方法でもよい。
ここで、スクラッチ画像データ、ノイズ画像データ、ホコリ画像データのサイズは、所定のサイズ(例えば1980×1080画素)の画像データを基準にして決められている。このため、合成対象の画像データのサイズによってはスクラッチ画像データ、ノイズ画像データ、ホコリ画像データを拡大又は縮小してから合成することが望ましい。図18は、このような合成処理の概要を示す図である。例えば、合成対象の画像データのサイズが、4000×3000画素(例えば静止画データ)である場合、ノイズ画像データとホコリ画像データについては、縦方向及び横方向に4000/1920倍の拡大をしてから合成する。また、スクラッチ画像データは、縦方向に縮小されている。したがって、スクラッチ画像データについては、(1/縮小率)×4000/1920倍の拡大をしてから合成する。これにより、合成対象の画像データのサイズ毎のスクラッチ画像データ、ノイズ画像データ、ホコリ画像データを記憶させておく必要がなくなる。ここで、図18は、合成対象の画像データのサイズが1980×1080画素よりも大きい場合の例を示している。合成対象の画像データのサイズが1980×1080画素よりも小さい場合であっても合成対象の画像データのサイズが1980×1080画素よりも大きい場合と同様の考え方に従ってスクラッチ画像データ、ノイズ画像データ、ホコリ画像データを縮小すればよい。ここで、図18ではスクラッチ画像データ、ノイズ画像データ、ホコリ画像データをそれぞれリサイズ(拡大)した後合成しているが、これら3つの画像を合成した後リサイズし、撮影画像に合成するようにしてもよい。
図19は、シェーディング処理を示すフローチャートである。10において、特殊画像処理部2202は、乱数の種生成部2202a及び擬似乱数生成部2202bにより、シェーディングを付加するために必要となる擬似乱数を取得する(ステップS701)。図19に示す処理では、例として、少なくとも1つの擬似乱数Rを取得する。擬似乱数の具体的な取得の仕方については後で説明する。
擬似乱数Rの取得後、特殊画像処理部2202は、シェーディングの形状を示す拡大率を計算する(ステップS702)。拡大率をaとすると、aは例えば以下の(式5)によって与えられる。
a=0.5+R/MAX (式5)
拡大率aを計算した後、特殊画像処理部2202は、拡大率aに従ってゲインマップを生成する(ステップS703)。ゲインマップは、シェーディングを付加する領域(例えば被写体が存在する領域)の中心位置の画素からの距離に応じて徐々に輝度の値が低下するようなゲインを有するマップである。ゲインの値の最大値は1であるとする。本実施形態においては、このようにして生成されるゲインマップに拡大率aに応じてリサイズしたものを最終的なゲインマップとする。
ゲインマップを生成した後、特殊画像処理部2202は、ゲインマップによって示されるゲインを対応する画素に乗じる(ステップS704)。このようにして画像データの周辺が暗くなるようなシェーディングエフェクトが付加される。ここで、本実施形態においては、擬似乱数Rの値に応じて拡大率aが0.5〜1.5の範囲で変化する。このaの変化に伴い、シェーディングの形状(大きさ)が変化する。図20(a)は、拡大率aが0.5のときに付加されるシェーディングエフェクトの例を示している。また、図20(b)は、拡大率aが1.5のときに付加されるシェーディングエフェクトの例を示している。
ここで、シェーディングの形状変化が大きすぎるとユーザに違和感を与えるおそれがある。したがって、前回のシェーディング付加処理の際の拡大率と今回のシェーディング付加処理の際の拡大率との差が所定以内となるように拡大率の値を制限するようにしてもよい。例えば、前回のシェーディング付加処理の際の拡大率をbとし、今回のシェーディング付加処理の際の拡大率をaとしたときに、以下の(式6)の条件を満たすように最終的なaを決定する。
|b−a|<0.1 (式6)
また、図19のフローチャートの例は、拡大率aを必ず変更している。これに限らず、数フレームに1回だけ拡大率aを変更するようにしてもよい。この場合、拡大率aを変更していないフレームについては前回のフレームとの間の線形補間によって拡大率aを計算してよい。
図21は、粒子ノイズエフェクトの付加処理の処理を示すフローチャートである。図21において、特殊画像処理部2202は、乱数の種生成部2202a及び擬似乱数生成部2202bにより、粒子ノイズを付加するために必要となる擬似乱数を取得する(ステップS801)。図21に示す処理では、例として、少なくとも2つの擬似乱数Wr及びHrを取得するものとする。擬似乱数の具体的な取得の仕方については後で説明する。
擬似乱数Wr及びHrの取得後、特殊画像処理部2202は、ノイズ画像データを読み込む(ステップS802)。そして、特殊画像処理部2202は、ノイズ画像データの切り出し位置を算出する(ステップS803)。切り出し位置は、ノイズ画像データの切り出し範囲を決めるための基準となる位置であって、例えばノイズ画像データの左上の座標である。本実施形態においては、スクラッチ画像データを重畳する際にノイズ画像データの切り出し範囲をランダムに更新することによってゴミ等に起因するノイズのランダム性を再現する。更新後の切り出し位置(x,y)は例えば以下の(式7)に従って与えられる。
x=(Wn−Wi)×Wr/MAX
y=(Hn−Hi)×Hr/MAX (式7)
ここで、Wnは合成対象の画像データの横方向のサイズ(画素数)であり、Hnは合成対象の画像データの縦方向のサイズ(画素数)である。また、Wiは切り出し範囲の横方向のサイズ(画素数)であり、Hiは切り出し範囲の縦方向のサイズ(画素数)である。図22は、Wn、Hn、Wi、Hiの関係を示している。
切り出し位置の算出後、特殊画像処理部2202は、合成部2202dにより、ノイズ画像データを合成対象の画像データに合成する(ステップS804)。その後、特殊画像処理部2202は、図21の処理を終了させる。ノイズ画像データの合成は、フィルムノイズエフェクトの付加処理の時と同様である。必要に応じてノイズ画像データのサイズを合成対象の画像データのサイズに合わせた後で両者を乗算することによって合成が行われる。
ここで、図21のフローチャートの例は、切り出し位置を必ず変更している。これに限らず、数フレームに1回だけ又はランダムに切り出し位置を変更するようにしてもよい。切り出し位置をランダムに変更するようにする場合には、ステップS801においてさらに別の擬似乱数を取得するようにする。そして、例えばステップS606と同様の判定を行えばよい。
次に、擬似乱数の取得処理について説明する。図23は、擬似乱数取得処理について示すフローチャートである。図23において、特殊画像処理部2202は、現在の特殊画像処理が静止画に対する処理であるか否かを判定する(ステップS901)。現在の特殊画像処理が静止画に対する処理であるか否かの情報は、例えばマイクロコンピュータ234によって通知されるものとする。
前述した例では、静止画に対する特殊画像処理の際には、ランダムな切り出し位置等の更新が必ず行われる。したがって、ステップS901において、現在の特殊画像処理が静止画に対する処理であると判定した場合に、特殊画像処理部2202は、乱数の種生成部2202aによって乱数の種を生成する(ステップS902)。乱数の種は、RAWデータ、カメラ設定、撮影時の条件等といったデジタルカメラ1に関わる各種のパラメータに応じて生成する。乱数の種の具体的な生成手法については後で詳しく説明する。
乱数の種が生成された後、特殊画像処理部2202は、擬似乱数生成部2202bの擬似乱数生成器を初期化する(ステップS903)。この処理において、擬似乱数生成部2202bは、擬似乱数生成器に設定する初期値を、ステップS902において生成された乱数の種の値に設定する。続いて、特殊画像処理部2202は、擬似乱数生成部2202bによって必要な個数の擬似乱数系列(例えば、図10の場合にはR[0]〜R[9]の10個の乱数系列)を生成する(ステップS904)。この処理において、擬似乱数生成部2202bは、擬似乱数生成器によって擬似乱数系列を生成する。擬似乱数系列の生成手法は特に限定されない。
ステップS901において、現在の特殊画像処理が静止画に対する処理でないと判定した場合に、特殊画像処理部2202は、現在の合成対象の画像データが最初のフレームであるか否かを判定する(ステップS905)。ステップS905において、現在の合成対象の画像データが最初のフレームであると判定した場合に、特殊画像処理部2202は、処理をステップS902に移行させる。最初のフレームの時点では、まだ乱数の種が生成されていない。したがって、ステップS902の乱数の種の生成が行われる。ステップS905において、現在の合成対象の画像データが最初のフレームでないと判定した場合に、特殊画像処理部2202は、処理をステップS904に移行させる。この場合には前フレームの擬似乱数生成器の設定に従って擬似乱数系列が生成される。
次に、乱数の種の生成手法の例を説明する。図24は、RAWデータを用いて乱数の種を生成して特殊画像処理を行う際の一連の流れを示した概念図である。図24の例では、メカシャッタを用いた撮影又は電子シャッタを用いた撮影によって得られるRAWデータに基づいて乱数の種が生成される。一例としては、RAWデータの特定の座標の値が乱数の種となる。特定の座標とは、例えばRAWデータの左上の座標や中央の座標である。この他、RAWデータの複数の座標の値を組み合わせることによって乱数の種を生成してもよい。例えば、RAWデータにおける複数の座標の値を加算した結果、減算した結果を乱数の種としたり、複数の座標の値の排他的論理和をした結果を乱数の種としてもよい。さらに、RAWデータにカメラ設定を組み合わせすることによって乱数の種を生成してもよい。例えば、ホワイトバランスモード、輝度変更処理の設定、コントラスト設定、シャープネス設定といったカメラ設定に数値を割り当て、この数値をRAWデータにより生成される乱数の種に加減算等して最終的な乱数の種としてよい。また、後述の図25と同様に画像処理パラメータを組み合わることによって乱数の種を生成してもよい。
図24に示すようにして生成される乱数の種に従って擬似乱数生成器を初期化して擬似乱数系列を生成することにより、一般に撮影により得られるRAWデータは撮影毎に異なるため、撮影により得られるRAWデータ毎に異なる擬似乱数系列が生成され得る。したがって、撮影毎に異なるエフェクトを画像に付加することが可能である。
また、カメラ設定が異なると乱数の種も異なるため、同一のRAWデータであってもカメラ設定毎に異なるエフェクトを画像に付加することが可能である。
図25は、RAWリサイズ部210で縮小されたRAWデータを用いて乱数の種を生成して特殊画像処理を行う際の一連の流れを示した概念図である。図25の例では、一例として縮小後のRAWデータの特定の座標のデータが乱数の種となる。特定の座標とは、例えばRAWデータの左上の座標や中央の座標である。この他、縮小後のRAWデータの複数の座標のデータを組み合わせることによって乱数の種が生成されてもよい。例えば、RAWデータにおける複数の座標のデータを加算した結果、減算した結果を乱数の種としたり、複数の座標のデータの排他的論理和をした結果が乱数の種とされ得る。さらに、縮小後のRAWデータに画像処理パラメータを組み合わることによって乱数の種が生成されてもよい。例えば、ホワイトバランスゲイン、彩度・色調補正係数、ガンマ値、エッジ強調度、ノイズ低減(NR)強度といった画像処理パラメータをRAWデータにより生成される乱数の種に加減算等して最終的な乱数の種としてよい。この他、記録画像の圧縮率、記録画像のサイズといった画像処理パラメータが用いられてもよい。
縮小後のRAWデータの数画素のデータを用いて乱数の種を生成するようにする場合、間接的にではあるが、縮小前のRAWデータでは数画素よりも多くの情報を用いて乱数の種を生成することができる。すなわち、縮小が補間処理によって行われているので、補間後のRAWデータにおけるある座標のデータは、縮小前のRAWデータにおける複数の座標のRAWデータの情報を含んでいると考えることができる。このように縮小前よりも多くの情報を含んでいる縮小後のRAWデータに基づいて乱数の種を生成することにより、シーンの明るさ等の撮影条件がわずかに違っただけであっても異なるエフェクトが画像に付加され易い。
図26は、撮影時に生成される乱数を用いて乱数の種を生成して特殊画像処理を行う際の一連の流れを示した概念図である。撮影時に生成される乱数は、例えば擬似乱数生成部2202bにおいて生成される。ここで、撮影時において生成される乱数は必ずしも擬似乱数でなくてよい。したがって、撮影時に生成される乱数は、擬似乱数生成部2202bとは別の擬似乱数生成部において生成されるものであってもよい。ここで、図26の例においても、RAWデータや縮小後のRAWデータを組み合わせたり、カメラ設定や画像処理パラメータを組み合わせたりすることによって最終的な擬似乱数を生成してよい。
図26に示すようにして、撮影毎に乱数を生成し、生成した乱数に従って乱数の種を生成することにより、撮影毎に異なるエフェクトを画像に付加することが可能である。
図27は、RAWデータに対して基本画像処理を施すことによって得られるYCデータ(中間YCデータと言う)を用いて乱数の種を生成して特殊画像処理を行う際の一連の流れを示した概念図である。一例としては、中間YCデータの特定の座標の値が乱数の種となる。特定の座標とは、例えば中間YCデータの左上の座標や中央の座標である。この他、中間YCデータの複数の座標の値を組み合わせることによって乱数の種を生成してもよい。
図27に示すようにして中間YCデータを用いて乱数の種を生成することにより、カメラ設定や画像処理パラメータを考慮して乱数の種を生成したのと同様の効果が得られる。
図28は、撮影時の各種条件を用いて乱数の種を生成して特殊画像処理を行う際の一連の流れを示した概念図である。図25の例では、撮影時の条件として例えば露光条件、被写体条件、カメラ状態が用いられる。露光条件は、例えば、シャッタ速、絞り値、ISO感度の少なくとも何れかである。被写体条件は、顔やペット等の被写体の有無、被写体が存在している場合にはその大きさ、位置、数等である。カメラ状態は、例えば、撮影時における、撮像素子204の温度、カメラ本体200の内部温度、バッテリーの残量、記録媒体232の種類や容量や残量、フォーカス位置、ズーム位置である。これらの露光条件、被写体条件、カメラ状態を必要に応じて数値化(もとが数値である場合にはその値を用いればよい)し、数値化した条件を加減算することによって乱数の種が生成される。ここで、図28の例においても、RAWデータ、縮小後のRAWデータ、中間YCデータと言った画像データと組み合わせたり、カメラ設定や画像処理パラメータを組み合わせたりすることによって最終的な擬似乱数を生成してよい。
図28に示すようにして撮影時の各種条件を用いて乱数の種を生成することによっても、撮影毎に異なるエフェクトを画像に付加することが可能である。
ここで、前述したように、擬似乱数系列は、同一の乱数の種からは同一の系列が生成されるという特徴を有している。したがって、乱数の種を生成するための情報が記録されていれば、撮影時の画像処理の段階でノイズエフェクトを付加する特殊画像処理が施されなかった画像データに対して後からノイズエフェクトを付加する特殊画像処理を施すことが可能である。図29は、乱数の種を生成するための情報を画像ファイルに記録する場合の、画像ファイルのファイル構造を示す図である。ここで、図29(a)はJPEG形式で記録された静止画ファイル(JPEGファイルと言う)の例であり、図29(b)はRAWファイルの例である。動画ファイルについては図示を省略している。動画ファイルは、画像データの構造やヘッダ情報の構造が動画ファイル特有のものとなっている。乱数の種を生成するための情報の記録の仕方は動画ファイルと静止画ファイルとで差異はない。
図29(a)に示すように、JPEGファイルは、ヘッダ記録部と、サムネールJPEGデータ記録部と、主画像JPEGデータ記録部と、スクリーンネールJPEGデータ記録部とを有している。
ヘッダ記録部は、露光条件、被写体条件、カメラ状態といった各種の情報をメタデータとして記録するための記録部である。図29(a)では露光条件、被写体条件、カメラ状態を記録する例を示している。これらの情報の他、カメラ設定、画像処理パラメータといった情報が記録されてもよい。さらに、擬似乱数が生成されている場合、生成された擬似乱数が直接的に記録されてもよい。
サムネールJPEGデータ記録部は、静止画再生のためのサムネール表示用の画像データをJPEG形式で圧縮して記録しておくための記録部である。主画像JPEGデータ記録部は、メカシャッタ202を用いた撮影により得られた静止画データをJPEG形式で圧縮して記録しておくための記録部である。スクリーンネールJPEGデータ記録部は、スクリーンネール表示用の画像データをJPEG形式で圧縮して記録しておくための記録部である。
図29(b)に示すように、RAWファイルは、ヘッダ記録部と、サムネールJPEGデータ記録部と、RAWデータ記録部と、縮小RAWデータ記録部と、スクリーンネールJPEGデータ記録部とを有している。
ヘッダ記録部は、露光条件、被写体条件、カメラ状態といった各種の情報をメタデータとして記録するための記録部である。図29(b)では露光条件、被写体条件、カメラ状態を記録する例を示している。ヘッダ記録部についてはJPEGファイルとRAWファイルとで差異は殆どない。
サムネールJPEGデータ記録部は、RAW再生のためのサムネール表示用の画像データをJPEG形式で圧縮して記録しておくための記録部である。RAWデータ記録部は、メカシャッタ202を用いた撮影又は電子シャッタを用いた撮影により得られたRAWデータを記録しておくための記録部である。縮小RAWデータ記録部は、図25で示した縮小後のRAWデータを用いて乱数の種を生成する際に必要となる縮小後のRAWデータを記録しておくための記録部である。スクリーンネールJPEGデータ記録部は、スクリーンネール表示用の画像データをJPEG形式で圧縮して記録しておくための記録部である。
次に、再生処理について説明する。図30は、再生処理について示すフローチャートである。図30において、マイクロコンピュータ234は、記録媒体232に記録されている画像ファイルの一覧を表示させる(ステップS1101)。この処理において、マイクロコンピュータ234は、各画像ファイルのサムネールJPEGデータをSDRAM214に読み込む。そして、マイクロコンピュータ234は、読み込んだサムネールJPEGデータを画像圧縮伸張部228に入力する。画像圧縮伸張部228は、入力されたサムネールJPEGデータを伸張し、伸張したサムネールJPEGデータを表示ドライバ224に入力する。表示ドライバ224は、入力されたサムネールJPEGデータに基づいて表示部226に画像ファイルの一覧を表示させる。
一覧表示の後、マイクロコンピュータ234は、再生処理を終了するか否かを判定する(ステップS1102)。例えば、再生ボタンが再度押された場合には再生を終了すると判定される。ステップS1102において、再生処理を終了すると判定した場合、マイクロコンピュータ234は、図30の処理を終了させる。
ステップS1102において、再生処理を終了しないと判定した場合に、マイクロコンピュータ234は、ユーザによる画像ファイルの選択を待つ(ステップS1103)。一覧表示された画像ファイルの選択をユーザが操作部236を操作することによって実行した場合、マイクロコンピュータ234は、選択された画像ファイルが動画ファイルであるか否かを判定する(ステップS1104)。
ステップS1104において、選択された画像ファイルが動画ファイルであると判定した場合に、マイクロコンピュータ234は、選択された動画ファイルに記録された動画データのフレーム数を読み込む(ステップS1105)。続いて、マイクロコンピュータ234は、再生する動画データのフレーム数のカウント値iを初期化する(ステップS1106)。カウント値iの初期値は例えば1である。
続いて、マイクロコンピュータ234は、選択された動画ファイルに記録された動画データにおけるiフレーム目を再生し、表示部226に表示させる(ステップS1107)。この処理において、マイクロコンピュータ234は、ユーザによって選択された動画ファイルに記録されている動画データのiフレーム目をSDRAM214に読み込む。そして、マイクロコンピュータ234は、読み込んだiフレーム目の動画データを画像圧縮伸張部228に入力する。画像圧縮伸張部228は、入力された動画データを伸張し、伸張した動画データを表示ドライバ224に入力する。表示ドライバ224は、入力されたiフレーム目の動画像データに対応する画像を表示部226に表示させる。
動画像データのiフレームを再生及び表示した後、マイクロコンピュータ234は、カウント値に1を加える(ステップS1108)。その後、マイクロコンピュータ234は、カウント値iがフレーム数以下であるか否か、即ち全てのフレームの再生が終了していないか否かを判定する(ステップS1109)。ステップS1109において、カウント値iがフレーム数以下である場合には、まだ再生すべきフレームが残っている。この場合、マイクロコンピュータ234は、処理をステップS1107に戻して次のフレームの再生及び表示を行う。ステップS1109において、カウント値iがフレーム数になった場合には、動画ファイルの再生が終了したことを意味する。この場合、マイクロコンピュータ234は、処理をステップS1101に戻す。
ステップS1104において、選択された画像ファイルが動画ファイルでない、すなわち静止画ファイルであると判定した場合に、マイクロコンピュータ234は、選択された静止画ファイルに記録された静止画データを読み込む(ステップS1110)。続いて、マイクロコンピュータ234は、読み込んだ静止画データ(図29のようなファイル構造の場合には、JPEGの場合には主画像JPEG、RAWの場合にはスクリーンネールJPEG)を再生し、表示部226に表示させる(ステップS1111)。この処理において、マイクロコンピュータ234は、読み込んだ静止画データを画像圧縮伸張部228に入力する。画像圧縮伸張部228は、入力された静止画データを伸張し、伸張した静止画データを表示ドライバ224に入力する。表示ドライバ224は、入力された静止画データに対応する画像を表示部226に表示させる。
続いて、マイクロコンピュータ234は、ユーザによって編集操作がなされたか否かを判定する(ステップS1112)。ここでの編集操作は、ユーザがメニューからノイズエフェクトを付加する旨の項目を選択する操作である。ノイズエフェクト以外の効果を付加する等の編集操作については従来と同様でよいので説明を省略する。
ステップS1112において、編集操作がなされていないと判定した場合に、マイクロコンピュータ234は、静止画の表示を終了するか否かを判定する(ステップS1113)。例えば、ユーザによってメニューボタンが押された場合には表示を終了すると判定する。ステップS1113において、表示を終了しないと判定した場合に、マイクロコンピュータ234は、処理をステップS1112に戻す。この場合には、静止画の表示が継続される。ステップS1113において、表示を終了すると判定した場合に、マイクロコンピュータ234は、図30の処理を終了させる。
ステップS1112において、編集操作がなされたと判定した場合に、マイクロコンピュータ234は、編集処理を行う(ステップS1114)。以下、編集処理について図31を参照してさらに説明する。ここで、ステップS1114の処理は、静止画ファイルに対する処理である。しかしながら、以下で説明する処理は動画ファイルに対しても適用可能である。
図31は、編集処理について示すフローチャートである。図31において、マイクロコンピュータ234は、現在の編集対象の静止画ファイルを読み込む(ステップS1201)。続いて、マイクロコンピュータ234は、読み込んだ静止画ファイルがRAWファイルであるか否かを判定する(ステップS1202)。
ステップS1202において静止画ファイルがRAWファイルであると判定した場合に、マイクロコンピュータ234は、このRAWファイルに対する画像処理を行う(ステップS1203)。ステップS1203における画像処理は、図4に示す画像処理と同じである。RAWファイルであるので、基本画像処理と特殊画像処理の両方を行う。ここで、特殊画像処理に必要となる擬似乱数は、前述したように、RAWデータ(又は縮小RAWデータ)、カメラ設定、及び画像処理パラメータを組み合わせて生成される乱数の種から生成することができる。この際、カメラ設定は、RAWファイルのヘッダ記録部に記録されているものを利用してもよいし、編集処理の時点でユーザによって新たに設定されたものを利用してもよい。ヘッダ記録部に記録されているカメラ設定を利用した場合、撮影時と同じノイズエフェクトを付加することができる。一方、ユーザによって新たに設定されたカメラ設定を利用した場合、変更に応じたノイズエフェクトを付加することができる。
ステップS1202において静止画ファイルがRAWファイルでない、すなわちJPEGファイルと判定した場合に、マイクロコンピュータ234は、このJPEGファイルに対する特殊画像処理を行う(ステップS1204)。ステップS1204における特殊画像処理は、図6に示す特殊画像処理と同じである。ここで、特殊画像処理に必要となる擬似乱数は、前述したように、撮影時の各種条件、カメラ設定、及び画像処理パラメータを組み合わせて生成される乱数の種から生成することができる。この際、カメラ設定は、JPEGファイルのヘッダ記録部に記録されているものを利用してもよいし、編集処理の時点でユーザによって新たに設定されたものを利用してもよい。ヘッダ記録部に記録されているカメラ設定を利用した場合、撮影時と同じノイズエフェクトを付加することができる。一方、ユーザによって新たに設定されたカメラ設定を利用した場合、変更に応じたノイズエフェクトを付加することができる。
以上説明したように、本実施形態では、スクラッチ画像データとノイズ画像データの一部がランダムに切り出された後、スクラッチ画像データ、ノイズ画像データ、ホコリ画像データが合成されて合成ノイズ画像データが生成される。さらに、合成ノイズ画像データが合成対象の画像データと合成される。このように、本実施形態ではフィルム撮影時に表れる特有のノイズを分解して合成をすることにより、長時間の動画データを記録することなく、ユーザに自然な印象のノイズ感を与えることができる。
また、スクラッチ画像データはある一方向に対して相関が高いという性質を有していることを利用してスクラッチ画像データを縮小して記録することにより、スクラッチ画像データを記録するための容量を節約することができる。
また、スクラッチ画像データ及びノイズ画像データのサイズが合成対象の画像データのサイズと一致していない場合にスクラッチ画像データ及びノイズ画像データのサイズを合成対象の画像データと一致させるような処理を行うことにより、合成対象の画像データのサイズ毎にスクラッチ画像データ及びノイズ画像データを記録しておく必要がなくなる。
また、本実施形態では、撮影により得られたRAWデータや、撮影時のカメラ設定、画像処理パラメータから乱数の種を生成し、この乱数の種に基づいてノイズエフェクト、シェーディングエフェクト、粒子ノイズエフェクトを付加するための擬似乱数を生成するようにしている。これにより、撮影時の状況に応じたエフェクトを画像に付加することが可能である。
ここで、本実施形態ではスクラッチ画像データ、ノイズ画像データ、ホコリ画像データの3種類を合成対象の画像データに合成している。実際には必ずしも全ての画像データを合成する必要はない。例えば、ホコリ画像データを合成しないようにしてもよい。
以上実施形態に基づいて本発明を説明したが、本発明は上述した実施形態に限定されるものではなく、本発明の要旨の範囲内で種々の変形や応用が可能なことは勿論である。また、前述の各動作フローチャートの説明において、便宜上「まず」、「次に」等を用いて動作を説明しているが、この順で動作を実施することが必須であることを意味するものではない。
また、上述した実施形態における撮像装置による各処理の手法、すなわち、各フローチャートに示す処理は、何れもマイクロコンピュータ234に実行させることができるプログラムとして記憶させておくこともできる。この他、メモリカード(ROMカード、RAMカード等)、磁気ディスク(フロッピディスク、ハードディスク等)、光ディスク(CD−ROM、DVD等)、半導体メモリ等の外部記憶装置の記憶媒体に格納して配布することができる。そして、マイクロコンピュータ234は、この外部記憶装置の記憶媒体に記憶されたプログラムを読み込み、この読み込んだプログラムによって動作が制御されることにより、上述した処理を実行することができる。
さらに、上記した実施形態には種々の段階の発明が含まれており、開示される複数の構成要件の適当な組合せにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、上述したような課題を解決でき、上述したような効果が得られる場合には、この構成要件が削除された構成も発明として抽出され得る。