(57)【特許請求の範囲】
【請求項１】
ユーザーの指示に応じて画像のトリミング対象であるトリミング領域を設定する設定手段と、
前記トリミング領域が設定された後に、前記画像に対して、前記画像を撮影する際に用いたレンズの歪曲収差に起因する歪みを補正するために形状を変化させる補正を行い、かつ、形状を変化させた画像に内接する矩形領域に相当する有効画像領域における画像を出力する歪曲補正処理を行う画像処理手段と、
前記画像に対して前記歪曲補正処理を行うことにより形状を変化させた後の前記トリミング領域が、前記有効画像領域からはみ出すか否かを判定する判定手段と、
前記判定手段によってはみ出すと判定された場合は、前記歪曲補正処理が行われることにより形状を変化させた後の前記トリミング領域の画像が、前記有効画像領域に含まれるように、当該トリミング領域を移動する、および、変倍することの少なくともいずれかを行う変更手段とを備えることを特徴とする画像処理装置。
【請求項２】
前記画像を表示する画像表示手段を更に備え、
前記設定手段は、前記画像表示手段に表示された画像に対して前記トリミング領域を設定することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
ユーザーの指示に応じて画像のトリミング対象である第１のトリミング領域を設定する設定手段と、
前記第１のトリミング領域が設定された後に、前記画像に対して、前記画像を撮影する際に用いたレンズの歪曲収差に起因する歪みを補正するために形状を変化させる補正を行い、かつ、形状を変化させた画像に内接する矩形領域に相当する有効画像領域における画像を出力する歪曲補正処理を行う画像処理手段と、
前記画像に対して前記歪曲補正処理を行うことにより形状を変化させた後の前記第１のトリミング領域に内接または外接する第２のトリミング領域を算出する算出手段と、
前記第２のトリミング領域が、前記有効画像領域からはみ出すか否かを判定する判定手段と、
前記判定手段によってはみ出すと判定された場合は、前記第２のトリミング領域の画像が、前記有効画像領域に含まれるように、前記第２のトリミング領域を移動する、および、変倍することの少なくともいずれかを行う変更手段とを備えることを特徴とする画像処理装置。
【請求項４】
前記画像を表示する画像表示手段を更に備え、
前記設定手段は、前記画像表示手段に表示された画像に対して前記第１のトリミング領域を設定することを特徴とする請求項３に記載の画像処理装置。
【請求項５】
ユーザーの指示に応じて画像のトリミング対象であるトリミング領域を設定する設定工程と、
前記トリミング領域が設定された後に、前記画像に対して、前記画像を撮影する際に用いたレンズの歪曲収差に起因する歪みを補正するために形状を変化させる補正を行い、かつ、形状を変化させた画像に内接する矩形領域に相当する有効画像領域における画像を出力する歪曲補正処理を行う画像処理工程と、
前記画像に対して前記歪曲補正処理を行うことにより形状を変化させた後の前記トリミング領域が、前記有効画像領域からはみ出すか否かを判定する判定工程と、
前記判定工程においてはみ出すと判定された場合は、前記歪曲補正処理が行われることにより形状を変化させた後の前記トリミング領域の画像が、前記有効画像領域に含まれるように、当該トリミング領域を移動する、および、変倍することの少なくともいずれかを行う変更工程とを備えることを特徴とする画像処理方法。
【請求項６】
ユーザーの指示に応じて画像のトリミング対象である第１のトリミング領域を設定する設定工程と、
前記第１のトリミング領域が設定された後に、前記画像に対して、前記画像を撮影する際に用いたレンズの歪曲収差に起因する歪みを補正するために形状を変化させる補正を行い、かつ、形状を変化させた画像に内接する矩形領域に相当する有効画像領域における画像を出力する歪曲補正処理を行う画像処理工程と、
前記画像に対して前記歪曲補正処理を行うことにより形状を変化させた後の前記第１のトリミング領域に内接または外接する第２のトリミング領域を算出する算出工程と、
前記第２のトリミング領域が、前記有効画像領域からはみ出すか否かを判定する判定工程と、
前記判定工程においてはみ出すと判定された場合は、前記第２のトリミング領域の画像が、前記有効画像領域に含まれるように、前記第２のトリミング領域を移動する、および、変倍することの少なくともいずれかを行う変更工程とを備えることを特徴とする画像処理方法。
【請求項７】
請求項５又は６に記載の画像処理方法をコンピュータに実行させるためのコンピュータに読み取り可能なプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置及び方法、並びにプログラムに関し、特にデジタルカメラにより撮影して得られた画像を処理する画像処理装置及び方法、並びにプログラムに関する。
【背景技術】
【０００２】
近年、デジタルカメラの性能向上により、撮影される画像の解像度は非常に高くなり、銀塩写真に勝るとも劣らない高品質の写真画像を得ることが可能となった。ユーザは、デジタルカメラで撮影した画像をパーソナルコンピュータ等に搭載された画像処理アプリケーションを使用して閲覧したり、トリミング等の編集処理を施したりすることができる。
【０００３】
一般に、カメラで撮影して得られる画像には、撮影レンズの歪曲収差に起因する幾何学的歪みが生ずる。この歪みを補正するために、撮影レンズのレンズ特性を利用して収差補正を行う画像処理アプリケーションが登場している。このように、歪曲収差補正を行うことでより均質で高画質な画像を得ることができる。
【０００４】
画像に対して歪曲収差補正した場合の一例を図１３（ａ）及び図１３（ｂ）に示す。図１３（ａ）は樽形に歪んだ画像を補正した場合、図１３（ｂ）は糸巻形に歪んだ画像を補正した場合を表している。歪曲収差補正は画素位置の移動を伴う補正であるため、画像の外縁の形状が変化してしまう。画像の外縁の形状は一般的に矩形状であり、トリミング領域もこれに合わせて矩形状となっている。そのため、図１４に示すように、補正前の画像に対してトリミング領域が設定されていた場合、画像の外縁形状の変化により、トリミング領域が歪曲収差補正後の画像からはみ出してしまう場合がある。この結果、トリミング後の画像の一部に空白又は画素値が不確定の部分が生ずるという問題がある。この問題を防止するためには、例えば、歪曲収差補正を行った後の画像に対してのみトリミング領域の設定を可能にする必要がある。
【０００５】
また、上記問題を解決するために、トリミング領域を設定する際に、歪曲収差補正に伴う画欠け領域を明示し、ユーザに画欠け領域をトリミング領域として指定させないようにする技術が提案されている（例えば、特許文献１参照）。
【特許文献１】特開２０００−１０６６２３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した歪曲収差補正後の画像に対してのみトリミング領域を設定する方法では、トリミング領域の設定を必ず歪曲収差補正後に行わなければならない。また、上記特許文献１に記載された方法では、歪曲収差補正を実行するか否かを必ずトリミング領域の設定を行う前に決定しなくてはならない。このように、上記従来の方法では、歪曲収差補正を行う画像処理アプリケーション自体がユーザの画像編集に対する操作を制限することとなり、望ましくない。
【０００７】
また、近年では、撮影時に自動的にトリミング領域を設定するようなカメラも存在する。そのようなカメラで撮影された画像を画像処理アプリケーションで扱う場合、歪曲収差補正を実行する前に、必ずトリミング領域が設定されていることになり、上記従来の方法では対応できない。
【０００８】
本発明は、上記問題に鑑みて成されたものであり、画像編集に対するユーザの操作を制限することなく、画像処理により画像の外縁形状が変形しても、設定されたトリミング領域が画像処理後の画像からはみ出さずに、トリミング画像を適正化することを目的とする。
【０００９】
また、本発明は、予めトリミング領域が設定された画像が画像処理により外縁形状を変形されても、ユーザが意図したトリミング領域をトリミングすることを他の目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、請求項１記載の画像処理装置は、ユーザーの指示に応じて画像のトリミング対象であるトリミング領域を設定する設定手段と、前記トリミング領域が設定された後に、前記画像に対して、前記画像を撮影する際に用いたレンズの歪曲収差に起因する歪みを補正するために形状を変化させる補正を行い、かつ、形状を変化させた画像に内接する矩形領域に相当する有効画像領域における画像を出力する歪曲補正処理を行う画像処理手段と、前記画像に対して前記歪曲補正処理を行うことにより形状を変化させた後の前記トリミング領域が、前記有効画像領域からはみ出すか否かを判定する判定手段と、前記判定手段によってはみ出すと判定された場合は、前記歪曲補正処理が行われることにより形状を変化させた後の前記トリミング領域の画像が、前記有効画像領域に含まれるように、当該トリミング領域を移動する、および、変倍することの少なくともいずれかを行う変更手段とを備えることを特徴とする。  
【００１１】
上記目的を達成するために、請求項３記載の画像処理装置は、ユーザーの指示に応じて画像のトリミング対象である第１のトリミング領域を設定する設定手段と、前記第１のトリミング領域が設定された後に、前記画像に対して、前記画像を撮影する際に用いたレンズの歪曲収差に起因する歪みを補正するために形状を変化させる補正を行い、かつ、形状を変化させた画像に内接する矩形領域に相当する有効画像領域における画像を出力する歪曲補正処理を行う画像処理手段と、前記画像に対して前記歪曲補正処理を行うことにより形状を変化させた後の前記第１のトリミング領域に内接または外接する第２のトリミング領域を算出する算出手段と、前記第２のトリミング領域が、前記有効画像領域からはみ出すか否かを判定する判定手段と、前記判定手段によってはみ出すと判定された場合は、前記第２のトリミング領域の画像が、前記有効画像領域に含まれるように、前記第２のトリミング領域を移動する、および、変倍することの少なくともいずれかを行う変更手段とを備えることを特徴とする。
【００１２】
上記目的を達成するために、請求項５記載の画像処理方法は、ユーザーの指示に応じて画像のトリミング対象であるトリミング領域を設定する設定工程と、前記トリミング領域が設定された後に、前記画像に対して、前記画像を撮影する際に用いたレンズの歪曲収差に起因する歪みを補正するために形状を変化させる補正を行い、かつ、形状を変化させた画像に内接する矩形領域に相当する有効画像領域における画像を出力する歪曲補正処理を行う画像処理工程と、前記画像に対して前記歪曲補正処理を行うことにより形状を変化させた後の前記トリミング領域が、前記有効画像領域からはみ出すか否かを判定する判定工程と、前記判定工程においてはみ出すと判定された場合は、前記歪曲補正処理が行われることにより形状を変化させた後の前記トリミング領域の画像が、前記有効画像領域に含まれるように、当該トリミング領域を移動する、および、変倍することの少なくともいずれかを行う変更工程とを備えることを特徴とする。  
【００１３】
上記目的を達成するために、請求項６記載の画像処理方法は、ユーザーの指示に応じて画像のトリミング対象である第１のトリミング領域を設定する設定工程と、前記第１のトリミング領域が設定された後に、前記画像に対して、前記画像を撮影する際に用いたレンズの歪曲収差に起因する歪みを補正するために形状を変化させる補正を行い、かつ、形状を変化させた画像に内接する矩形領域に相当する有効画像領域における画像を出力する歪曲補正処理を行う画像処理工程と、前記画像に対して前記歪曲補正処理を行うことにより形状を変化させた後の前記第１のトリミング領域に内接または外接する第２のトリミング領域を算出する算出工程と、前記第２のトリミング領域が、前記有効画像領域からはみ出すか否かを判定する判定工程と、前記判定工程においてはみ出すと判定された場合は、前記第２のトリミング領域の画像が、前記有効画像領域に含まれるように、前記第２のトリミング領域を移動する、および、変倍することの少なくともいずれかを行う変更工程とを備えることを特徴とする。
【発明の効果】
【００１４】
本発明によれば、トリミング領域が設定された画像に外縁の形状変化を伴う画像処理が実行されても、設定されたトリミング領域が画像処理された画像からはみ出ないように、トリミング領域の形状を変形させる。これにより、画像編集に対するユーザの操作を制限することなく、画像処理により画像の外縁形状が変形しても、設定されたトリミング領域が画像処理後の画像からはみ出さずに、トリミング画像を適正化することができる。
【００１５】
本発明によれば、予めトリミング領域が設定された画像に外縁の形状変化を伴う画像処理を行い、画像処理により変形したトリミング領域に基づいて新しいトリミング領域を算出する。そして、新しいトリミング領域が画像処理された画像からはみ出ないように、トリミング領域の形状を変形させる。これにより、予めトリミング領域が設定された画像が画像処理により外縁形状を変形されても、ユーザが意図したトリミング領域をトリミングすることができる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施の形態を図面を参照して詳細に説明する。
【００１７】
［第１の実施形態］
図１は、本発明の第１の実施形態に係る画像処理装置の構成例を示すブロック図である。
【００１８】
ＣＰＵ１０１は、画像処理装置１のシステム全体の動作をコントロールすると共に、一次記憶装置１０２に格納されたプログラムを実行する。一次記憶装置１０２はＲＡＭ（Random Access Memory）であり、ハードディスク等の二次記憶装置１０３に記憶されたプログラムやデータなどが一時的に格納される。一般的に、一次記憶装置１０２の記憶容量は二次記憶装置１０３の記憶容量よりも小さく、一次記憶装置１０２に格納しきれないプログラムやデータなどが二次記憶装置１０３に格納される。また、長時間記憶しなくてはならないデータなども二次記憶装置１０３に格納される。本実施の形態では、後述する画像処理アプリケーションのプログラムは二次記憶装置１０３に格納されるが、プログラム実行時には一次記憶装置１０２に読み込まれ、ＣＰＵ１０１により実行される。
【００１９】
入力デバイス１０４は、例えば、マウスやキーボードなどが該当する。出力デバイス１０５は、例えば、モニタやプリンタなどが該当する。ユーザは、入力デバイス１０４を操作することにより、出力デバイス１０５のＧＵＩ上の画像に対してトリミング領域を設定したり、所望の動作を選択したりすることができる。その際、入力デバイス１０４は実行中のプログラムなどに割り込み信号を送る。読込デバイス１０６は、撮影レンズやＣＣＤ（Charge Coupled Device）素子などで構成される撮像装置であり、撮像した画像を直接又は間接的に一次記憶装置１０２や二次記憶装置１０３へ格納する。
【００２０】
特性データ供給部１０７は、撮像装置の各種レンズに応じた特性データすなわち撮影レンズに対応した補正係数を、内蔵するメモリ（不図示）に格納し、必要に応じてＣＰＵ１０１に供給する。なお、レンズ特性の情報は、特性データ供給部１０７が有するメモリに限定されず、二次記憶装置１０３や図示しない外部記憶装置に格納されていてもよい。
【００２１】
画像処理装置１には、画像を閲覧したり、画像に対してトリミングや歪曲収差補正等の編集処理を施したりすることが可能な画像処理アプリケーションが搭載されている。本実施の形態における歪曲収差補正処理では、補正関数が予め定められ、補正関数に特性データ供給部１０７から供給された補正係数を適用することで補正量が算出され、算出された補正量に応じて画像が変形される。
【００２２】
図２は、図１の画像処理装置１におけるＧＵＩの一例を示す図である。
【００２３】
図２に示すＧＵＩは、画像処理アプリケーションを実行するＣＰＵ１０１により出力デバイス１０５に表示された画面である。画像処理アプリケーション上では、画像表示部４０１に処理対象となる画像がフィット表示される。ユーザは、オペレーティングシステム（ＯＳ）のファイル管理システム上から画像表示部４０１に画像ファイルをドラッグアンドドロップすることで処理対象画像を指定することができる。また、画像処理アプリケーション上では、処理対象画像に画像処理が施された結果の画像が画像表示部４０１に表示される。
【００２４】
トリミング実行ボタン４０２が押下されると、ユーザにより設定されたトリミング領域に従って処理対象画像がトリミングされ、結果の画像が画像表示部４０１に表示される。
【００２５】
歪曲収差補正実行ボタン４０３が押下されると、処理対象画像に対して、後述する図３の歪曲収差補正を含む画像処理が施され、その結果の画像が画像表示部４０１に表示される。後述する図３の画像処理には、歪曲収差補正が含まれるため、結果画像の外縁の形状が矩形でない場合がある。その際は、図１３（ａ）及び図１３（ｂ）に示すように、歪曲収差補正を施した画像の外縁に内接する矩形領域で結果画像を切り出し、切り出した画像を結果画像としてもよい。
【００２６】
リセットボタン４０４が押下されると、トリミングや歪曲収差補正処理を施す前の画像が画像表示部４０１に表示される。終了ボタン４０５が押下されると、画像処理アプリケーションが終了する。
【００２７】
トリミング領域４０６は、ユーザが入力デバイス１０４であるマウスを操作して、画像表示部４０１に表示された画像の所望範囲をドラッグ指定することにより設定される。画像上でマウスをクリックした点とアンクリックした点とを結ぶ線を対角線とする矩形をトリミング領域４０６とする。
【００２８】
画像処理アプリケーション上では、設定されたトリミング領域４０６の情報が画像ファイルに埋め込まれて保存される。なお、トリミング領域４０６の情報は、画像ファイルに関連付けられた上で、画像ファイルとは別に保存されてもよい。
【００２９】
トリミング領域４０６の情報は、図４に示すように、トリミング領域設定有無４０、左端Ｘ座標ｘｔ１４１及び上端Ｙ座標ｙｔ１４２、右端Ｘ座標ｘｔ２４３及び下端Ｙ座標ｙｔ２４４の値で構成される。
【００３０】
トリミング領域設定有無４０は、トリミング領域が設定されているか否かを示し、その設定値が「ＹＥＳ」の場合はトリミング領域が設定済みであり、「ＮＯ」の場合はトリミング領域が未設定である。以降の説明では、トリミング領域の情報を取得する場合は、処理対象画像のトリミング領域の情報を取得するものとする。
【００３１】
左端Ｘ座標ｘｔ１４１及び上端Ｙ座標ｙｔ１４２は、トリミング領域の左上座標（ｘｔ１，ｙｔ１）を示す。右端Ｘ座標ｘｔ２４３及び下端Ｙ座標ｙｔ２４４は、トリミング領域の右下座標（ｘｔ２，ｙｔ２）を示す。
【００３２】
図３は、歪曲収差補正実行ボタン押下時に実行される歪曲収差補正を含む処理の流れを示すフローチャートである。
【００３３】
ステップＳ６０１では、画像処理アプリケーションを実行するＣＰＵ１０１は、処理対象画像に対して歪曲収差補正処理を施す。本実施の形態では、ＣＰＵ１０１は、撮影時光学情報を用いて特性データ供給部１０７から特性データを取得し、予め定められた補正関数に適用することで像高（画像中心からの距離）に対する補正量を算出し、歪曲収差補正処理を実行する。補正関数は像高をパラメータとする３次関数とする。
【００３４】
撮影時光学情報は、撮影レンズを識別するための識別情報、ズーム位置を特定するための撮影時焦点距離情報、Ｆ値などで構成される。本実施の形態では、これらの情報がＥｘｉｆ規格で定められたＭａｋｅｒＮｏｔｅタグに格納される。なお、補正精度を上げるために、上記情報に加えて被写体距離情報などの情報を用いても構わない。
【００３５】
ステップＳ６０２では、ＣＰＵ１０１は、歪曲収差補正後の画像の外縁の形状に内接する矩形領域（以下、「有効画像領域」という。）の情報を取得する。有効画像領域の情報は、図５に示すように、有効画像領域５０１の左上座標（ｘｄ１，ｙｄ１）、右下座標（ｘｄ２，ｙｄ２）の値である。
【００３６】
ステップＳ６０３では、ＣＰＵ１０１は、処理対象画像のトリミング領域の情報を取得する。トリミング領域の情報は、図５に示すように、トリミング領域４０６の左上座標（ｘｔ１，ｙｔ１）、右下座標（ｘｔ２，ｙｔ２）の値である。
【００３７】
ステップＳ６０４では、ＣＰＵ１０１は、処理対象画像にトリミング領域が設定されているか否かを判定する。ステップＳ６０３でトリミング領域の情報を取得できなかった場合は、トリミング領域が設定されていないものとする。トリミング領域が設定されている場合は、ステップＳ６０５へ進む。一方、トリミング領域が設定されていなければ、ステップＳ６０９へ進む。
【００３８】
ステップＳ６０５では、ＣＰＵ１０１は、ステップＳ６０３で取得したトリミング領域が、ステップＳ６０２で取得した有効画像領域からはみ出しているか否かを判定する。この結果、（ｘｔ１，ｙｔ１）＜（ｘｄ１，ｙｄ１）又は（ｘｔ２，ｙｔ２）＞（ｘｄ２，ｙｄ２）となり、ＣＰＵ１０１はトリミング領域が有効画像領域からはみ出していると判定した場合、ステップＳ６０６に進む。一方、ＣＰＵ１０１は、トリミング領域が有効画像領域に完全に含まれていると判定した場合、ステップＳ６０８に進む。
【００３９】
ステップＳ６０６では、ＣＰＵ１０１は、トリミング領域が有効画像領域に完全に含まれるように、当該トリミング領域を変形する（トリミング領域変形処理）。トリミング領域変形処理の詳細については図６を用いて後述する。続いて、ステップＳ６０７では、変形したトリミング領域の情報を保存する。
【００４０】
ステップＳ６０８では、ＣＰＵ１０１は、歪曲補正処理後の画像からステップＳ６０６で変形したトリミング領域を切り出し、切り出した画像を結果画像として、一次記憶装置１０２又は二次記憶装置１０３に保存して、本処理を終了する。
【００４１】
ステップＳ６０９では、ＣＰＵ１０１は、歪曲補正処理された画像から有効画像領域を切り出し、切り出した画像を結果画像として、一次記憶装置１０２又は二次記憶装置１０３に保存して、本処理を終了する。なお、ステップＳ６０９において、歪曲補正処理された画像から有効画像領域を切り出すようにしたが、有効画像領域を切り出さずに歪曲補正処理された画像をそのまま結果画像としてもよい。
【００４２】
図６は、図３におけるステップＳ６０６のトリミング領域変形処理の詳細を示すフローチャートである。以下に説明する座標値は、図５に示すように、歪曲補正処理後の画像の左上座標を原点（０，０）とし、図の左右方向がＸ軸、上下方向がＹ軸となる座標系によるものとする。
【００４３】
図６において、ステップＳ８０１では、ＣＰＵ１０１はトリミング領域の大きさ（幅Ｗｔ，高さＨｔ）を算出する。トリミング領域の幅Ｗｔ及び高さＨｔは下式により算出される。
【００４４】
Ｗｔ＝ｘｔ２−ｘｔ１
Ｈｔ＝ｙｔ２−ｙｔ１
ステップＳ８０２では、ＣＰＵ１０１は、有効画像領域の大きさ（幅Ｗｄ，高さＨｄ）を算出する。有効画像領域の幅Ｗｄ及び高さＨｄは下式により算出される。
【００４５】
Ｗｄ＝ｘｄ２−ｘｄ１
Ｈｄ＝ｙｄ２−ｙｄ１
ステップＳ８０３では、ＣＰＵ１０１は、算出したトリミング領域の大きさと有効画像領域の大きさを比較する。この結果、Ｗｔ＞Ｗｄ又はＨｔ＞Ｈｄとなり、トリミング領域が有効画像領域よりも大きい場合は、ステップＳ８０４へ進む。一方、トリミング領域が有効画像領域と同じか又は小さい場合、ステップＳ８０６へ進む。
【００４６】
ステップＳ８０４，Ｓ８０５では、ＣＰＵ１０１は、下式により、トリミング領域をアスペクト比を保ちながら有効画像領域に内接するように変倍する。なお、このとき、アスペクト比を保たずに変倍するようにしてもよい。
【００４７】
ｉｆ（Ｗｔ／Ｈｔ＞Ｗｄ／Ｈｄ）：Ｗｔ＝Ｗｄ，Ｈｔ＝Ｗｄ×Ｈｔ／Ｗｔ
ｉｆ（Ｗｔ／Ｈｔ≦Ｗｄ／Ｈｄ）：Ｗｔ＝Ｈｄ×Ｗｔ／Ｈｔ，Ｈｔ＝Ｈｄ
ｘｔ２＝ｘｔ１＋Ｗｔ
ｙｔ２＝ｙｔ１＋Ｈｔ
ステップＳ８０６では、ＣＰＵ１０１は、トリミング領域の左端Ｘ座標ｘｔ１と有効画像領域の左端Ｘ座標ｘｄ１を比較する。この結果、ｘｔ１＜ｘｄ１であれば、ステップＳ８０７へ進む。一方、ｘｔ１≧ｘｄ１であれば、ステップＳ８０８へ進む。ステップＳ８０７では、ＣＰＵ１０１は、トリミング領域の左端Ｘ座標の値が有効画像領域の左端Ｘ座標の値になるように、下式により、トリミング領域を＋ｘ方向に移動する。
【００４８】
ｘｔ１＝ｘｔ１＋（ｘｄ１−ｘｔ１）
ｘｔ２＝ｘｔ２＋（ｘｄ１−ｘｔ１）
ステップＳ８０８では、ＣＰＵ１０１は、トリミング領域の上端Ｙ座標ｙｔ１と有効画像領域の上端Ｙ座標ｙｄ１を比較する。この結果、ｙｔ１＜ｙｄ１であれば、ステップＳ８０９へ進む。一方、ｙｔ１≧ｙｄ１であれば、ステップＳ８１０へ進む。ステップＳ８０９では、ＣＰＵ１０１は、トリミング領域の上端Ｙ座標の値が有効画像領域の上端Ｙ座標の値になるように、下式により、トリミング領域を＋ｙ方向に移動する。
【００４９】
ｙｔ１＝ｙｔ１＋（ｙｄ１−ｙｔ１）
ｙｔ２＝ｙｔ２＋（ｙｄ１−ｙｔ１）
ステップＳ８１０では、ＣＰＵ１０１は、トリミング領域の右端Ｘ座標ｘｔ２と有効画像領域の右端Ｘ座標ｘｄ２を比較する。この結果、ｘｔ２＞ｘｄ２であれば、ステップＳ８１１へ進む。一方、ｘｔ２≦ｘｄ２であれば、ステップＳ８１２へ進む。ステップＳ８１１では、ＣＰＵ１０１は、トリミング領域の右端Ｘ座標の値が有効画像領域の右端Ｘ座標の値になるように、下式により、トリミング領域を−ｘ方向に移動する。
【００５０】
ｘｔ１＝ｘｔ１−（ｘｔ２−ｘｄ２）
ｘｔ２＝ｘｔ２−（ｘｔ２−ｘｄ２）
ステップＳ８１２では、ＣＰＵ１０１は、トリミング領域の下端Ｙ座標ｙｔ２と、有効画像領域の下端Ｙ座標ｙｄ２を比較する。この結果、ｙｔ２＞ｙｄ２であれば、ステップＳ８１３へ進む。一方、ｙｔ２≦ｙｄ２であれば、リターンする。ステップＳ８１３では、ＣＰＵ１０１は、トリミング領域の下端Ｙ座標の値が有効画像領域の下端Ｙ座標の値になるように、下式により、トリミング領域を−ｙ方向に移動する。
【００５１】
ｙｔ１＝ｙｔ１−（ｙｔ２−ｙｄ２）
ｙｔ２＝ｙｔ２−（ｙｔ２−ｙｄ２）
上記実施の形態によれば、ユーザにより設定されたトリミング領域が、歪曲収差補正処理された画像からはみ出しているか否かを判定する。そして、はみ出していると判定されたときは、トリミング領域が歪曲収差補正処理された画像に含まれるように、トリミング領域の形状を変形させる。これにより、画像編集に対するユーザの操作を制限することなく、画像処理により画像の外縁形状が変形しても、設定されたトリミング領域が画像処理後の画像からはみ出さずに、トリミング画像を適正化することができる。
【００５２】
［第２の実施形態］
本発明の第２の実施の形態に係る画像処理装置は、その構成（図１）が上記第１の実施の形態に係る画像処理装置と同じであり、第１の実施の形態と同様の部分については、同一の符号を用いてその説明を省略する。以下に、上記第１の実施の形態と異なる点のみを説明する。
【００５３】
上記第１の実施形態では、画像に歪曲収差補正処理を施した後、トリミング領域が補正処理された画像領域からはみ出している場合、トリミング領域が補正処理後の画像領域に含まれるようにトリミング領域を並行移動又は変倍して、その形状を変形させた。これにより、ユーザがトリミング領域を設定した際に意図した大きさ（画素数）を変えずに、トリミング領域の形状を変形することができる。
【００５４】
しかしながら、ユーザが意図した画像の意味をなるべく変えずに、トリミング領域の形状を変更するようにしてもよい。すなわち、補正処理前の画像のトリミング領域に含まれる画素が移動した先の座標を含むようにトリミング領域の形状を変形する。
【００５５】
図７は、本発明の第２の実施形態における歪曲収差補正を含む処理の流れを示すフローチャートである。本処理は、上記第１の実施形態と同様に、歪曲収差補正実行ボタン４０３が押下されたときに実行される処理である。
【００５６】
ステップＳ９０１では、画像処理アプリケーションを実行するＣＰＵ１０１は、処理対象画像に対して歪曲収差補正処理を施す。歪曲収差補正処理は、図３のステップＳ６０１と同様の方法により行われる。
【００５７】
ステップＳ９０２では、ＣＰＵ１０１は、歪曲収差補正後の画像の外縁の形状に内接する矩形領域（以下、「有効画像領域」という。）の情報を取得する。有効画像領域の情報は、図３のステップＳ６０２と同様に、有効画像領域５０１の左上座標（ｘｄ１，ｙｄ１），右下座標（ｘｄ２，ｙｄ２）の値である。
【００５８】
ステップＳ９０３では、ＣＰＵ１０１は、処理対象画像のトリミング領域の情報を取得する。トリミング領域の情報は、図３のステップＳ６０３と同様に、トリミング領域４０６の左上座標（ｘｔ１，ｙｔ１）、右下座標（ｘｔ２，ｙｔ２）の値である。
【００５９】
ステップＳ９０４では、ＣＰＵ１０１は、処理対象画像にトリミング領域が設定されているか否かを判定する。ステップＳ９０３でトリミング領域の情報を取得できなかった場合は、トリミング領域が設定されていないものとする。トリミング領域が設定されている場合は、ステップＳ９０５へ進む。一方、トリミング領域が設定されていなければ、ステップＳ９１２へ進む。
【００６０】
ステップＳ９０５では、ＣＰＵ１０１は、ステップＳ９０３で取得したトリミング領域が、ステップＳ９０２で取得した有効画像領域からはみ出しているか否かを判定する。この結果、（ｘｔ１，ｙｔ１）＜（ｘｄ１，ｙｄ１）又は（ｘｔ２，ｙｔ２）＞（ｘｄ２，ｙｄ２）となり、ＣＰＵ１０１はトリミング領域が有効画像領域からはみ出していると判定した場合、ステップＳ９０６に進む。一方、ＣＰＵ１０１は、トリミング領域が有効画像領域に完全に含まれていると判定した場合、ステップＳ９１１に進む。
【００６１】
ステップＳ９０６では、ＣＰＵ１０１は、図８に示すように、画像に対して施した歪曲収差補正の補正関数に従ってトリミング領域を変形し、変形したトリミング領域に内接又は外接する矩形領域を新しいトリミング領域とする。新しいトリミング領域は、左上座標値（ｘ”ｔ１，ｙ”ｔ１）、右下座標値（ｘ”ｔ２，ｙ”ｔ２）となる。この処理の詳細については、図９〜図１１を用いて後述する。
【００６２】
ステップＳ９０７では、ＣＰＵ１０１は、現在のトリミング領域の情報を、ステップＳ９０５で取得した新しいトリミング領域の情報に置き換える（ｘｔ１＝ｘ”ｔ１，ｙｔ１＝ｙ”ｔ１，ｘｔ２＝ｘ”ｔ２，ｙｔ２＝ｙ”ｔ２）。
【００６３】
ステップＳ９０８では、ＣＰＵ１０１は、ステップＳ９０７で置き換えた新しいトリミング領域が有効画像領域からはみ出しているか否かを判定する。この結果、（ｘｔ１，ｙｔ１）＜（ｘｄ１，ｙｄ１）又は（ｘｔ２，ｙｔ２）＞（ｘｄ２，ｙｄ２）となり、ＣＰＵ１０１はトリミング領域が有効画像領域からはみ出していると判定した場合、ステップＳ９０９に進む。一方、ＣＰＵ１０１は、トリミング領域が有効画像領域に完全に含まれていると判定した場合、ステップＳ９１１に進む。
【００６４】
ステップＳ９０９では、ＣＰＵ１０１は、トリミング領域が有効画像領域に完全に含まれるように、当該トリミング領域を変形する（トリミング領域変形処理）。このトリミング領域変形処理は図６に示したものである。続いて、ステップＳ９１０では、変形したトリミング領域の情報を保存する。
【００６５】
ステップＳ９１１では、ＣＰＵ１０１は、歪曲補正処理後の画像からステップＳ９０９で変形したトリミング領域を切り出し、切り出した画像を結果画像として、一次記憶装置１０２又は二次記憶装置１０３に保存して、本処理を終了する。
【００６６】
ステップＳ９１２では、ＣＰＵ１０１は、歪曲補正処理後の画像から有効画像領域を切り出し、切り出した画像を結果画像として、一次記憶装置１０２又は二次記憶装置１０３に保存して、本処理を終了する。
【００６７】
本実施の形態では、ステップＳ９０６で歪曲収差補正の補正関数に基づいてトリミング領域の形状を変形した後、ステップＳ９０７，Ｓ９０８で再度トリミング領域のチェックを行う。これにより、ステップＳ９０６の処理の結果、トリミング領域が有効画像領域の外を含んでいても、その後の処理により、トリミング領域が有効画像領域の内部に含まれるように、再度変形することができる。
【００６８】
また、本実施の形態では、ステップＳ９０５でトリミング領域が有効画像領域からはみ出している場合に限り、ステップＳ９０６のトリミング領域の変形を実行するようにしている。しかし、ステップＳ９０６をステップＳ６０５の前に実行し、歪曲収差補正の補正関数に基づくトリミング領域の変形を必ず行うようにしてもよい。
【００６９】
図９及び図１０は、図７におけるステップＳ９０６の新しいトリミング領域の算出処理の詳細を示すフローチャートである。
【００７０】
以下に説明する座標値は、図１１に示すように、歪曲補正処理後の画像の左上座標を原点（０，０）とし、図の左右方向がＸ軸、上下方向がＹ軸となる座標系によるものとする。また、以下に説明する処理で得られる新しいトリミング領域の左上座標値を（ｘ”ｔ１，ｙ”ｔ１）、右下座標値を（ｘ”ｔ２，ｙ”ｔ２）とする。また、以下の説明では、座標値（ｘ，ｙ）＝（ｉ，ｊ）の位置の画素を、歪曲収差補正処理の補正関数により移動した先の座標値（ｘ，ｙ）＝（ｉ’，ｊ’）として表す。
【００７１】
図９において、ステップＳ１２０１〜Ｓ１２０８では、ＣＰＵ１０１は、新しいトリミング領域の上端のＹ座標ｙ”ｔ１を決定する。
【００７２】
ステップＳ１２０１では、ｙ”ｔ１にｙｔ１を代入する。次に、ステップＳ１２０２では、変数ｊにｙｔ１を代入する。次に、ステップＳ１２０３では、変数ｉにｘｔ１を代入する。
【００７３】
ステップＳ１２０４では、ＣＰＵ１０１は、歪曲収差補正の補正関数により、座標値（ｘ，ｙ）＝（ｉ，ｊ）の画素の移動先の座標値（ｘ，ｙ）＝（ｉ’，ｊ’）を算出する。次に、ステップＳ１２０５では、ＣＰＵ１０１は、ｙ”ｔ１とｊ’の値を比較する。この結果、ｙ”ｔ１＜ｊ’であれば、ステップＳ１２０６に進む。一方、ｙ”ｔ１≧ｊ’であれば、ステップＳ１２０７に進む。ステップＳ１２０６では、ｙ”ｔ１にｊ’を代入する。
【００７４】
ステップＳ１２０７では、ＣＰＵ１０１は、変数ｉの値に１を追加する。次に、ステップＳ１２０８では、変数ｉとｘｔ２の値を比較する。この結果、ｉ＞ｘｔ２であれば、ステップＳ１２０９に進む。一方、ｉ≦ｘｔ２であれば、ステップＳ１２０４に戻る。
【００７５】
ステップＳ１２０９〜Ｓ１２１６では、ＣＰＵ１０１は、新しいトリミング領域の下端のＹ座標ｙ”ｔ２を決定する。
【００７６】
ステップＳ１２０９では、ｙ”ｔ２にｙｔ２を代入する。次に、ステップＳ１２１０では、変数ｊにｙｔ２を代入する。次に、ステップＳ１２１１では、変数ｉにｘｔ１を代入する。
【００７７】
ステップＳ１２１２では、ＣＰＵ１０１は、歪曲収差補正の補正関数により、座標値（ｘ，ｙ）＝（ｉ，ｊ）の画素の移動先の座標値（ｘ，ｙ）＝（ｉ’，ｊ’）を算出する。次に、ステップＳ１２１３では、ＣＰＵ１０１は、ｙ”ｔ２とｊ’の値を比較する。この結果、ｙ”ｔ２＞ｊ’であれば、ステップＳ１２１４に進む。一方、ｙ”ｔ２≦ｊ’であれば、ステップＳ１２１５に進む。ステップＳ１２１４では、ｙ”ｔ２にｊ’を代入する。
【００７８】
ステップＳ１２１５では、ＣＰＵ１０１は、変数ｉの値に１を追加する。次に、ステップＳ１２１６では、変数ｉとｘｔ２の値を比較する。この結果、ｉ＞ｘｔ２であれば、図１０のステップＳ１２１７に進む。一方、ｉ≦ｘｔ２であれば、ステップＳ１２１２に戻る。
【００７９】
図１０において、ステップＳ１２１７〜Ｓ１２２４では、ＣＰＵ１０１は、新しいトリミング領域の左端のＸ座標ｘ”ｔ１を決定する。
【００８０】
ステップＳ１２１７では、ｘ”ｔ１にｘｔ１を代入する。次に、ステップＳ１２１８では、変数ｉにｘｔ１を代入する。次に、ステップＳ１２１９では、変数ｊにｙｔ１を代入する。
【００８１】
ステップＳ１２２０では、ＣＰＵ１０１は、歪曲収差補正の補正関数により、座標値（ｘ，ｙ）＝（ｉ，ｊ）の画素の移動先の座標値（ｘ，ｙ）＝（ｉ’，ｊ’）を算出する。次に、ステップＳ１２２１では、ＣＰＵ１０１は、ｘ”ｔ１とｉ’の値を比較する。この結果、ｘ”ｔ１＜ｉ’であれば、ステップＳ１２２２に進む。一方、ｘ”ｔ１≧ｉ’であれば、ステップＳ１２２３に進む。ステップＳ１２２２では、ｘ”ｔ１にｉ’を代入する。
【００８２】
ステップＳ１２２３では、ＣＰＵ１０１は、変数ｊの値に１を追加する。次に、ステップＳ１２２４では、変数ｊとｙｔ２の値を比較する。この結果、ｊ＞ｙｔ２であれば、ステップＳ１２２５に進む。一方、ｊ≦ｙｔ２であれば、ステップＳ１２２０に戻る。
【００８３】
ステップＳ１２２５〜Ｓ１２３２では、ＣＰＵ１０１は、新しいトリミング領域の右端のＸ座標ｘ”ｔ２を決定する。
【００８４】
ステップＳ１２２５では、ｘ”ｔ２にｘｔ２を代入する。次に、ステップＳ１２２６では、変数ｉにｘｔ２を代入する。次に、ステップＳ１２２７では、変数ｊにｙｔ１を代入する。
【００８５】
ステップＳ１２２８では、ＣＰＵ１０１は、歪曲収差補正の補正関数により、座標値（ｘ，ｙ）＝（ｉ，ｊ）の画素の移動先の座標値（ｘ，ｙ）＝（ｉ’，ｊ’）を算出する。ステップＳ１２２９では、ＣＰＵ１０１は、ｘ”ｔ２とｉ’の値を比較する。この結果、ｘ”ｔ２＞ｉ’であれば、ステップＳ１２３０に進む。一方、ｘ”ｔ２≦ｉ’であれば、ステップＳ１２３１に進む。ステップＳ１２３０では、ｘ”ｔ２にｉ’を代入する。
【００８６】
ステップＳ１２３１では、ＣＰＵ１０１は、変数ｊの値に１を追加する。次に、ステップＳ１２３２では、変数ｊとｙｔ２の値を比較する。この結果、ｊ＞ｙｔ２であれば、本処理を終了する。一方、ｊ≦ｙｔ２であれば、ステップＳ１２２８に戻る。
【００８７】
上記実施の形態によれば、予めトリミング領域が設定された画像に外縁の形状変化を伴う画像処理を行い、画像処理により変形したトリミング領域に基づいて新しいトリミング領域を算出する。そして、新しいトリミング領域が画像処理された画像からはみ出ないように、トリミング領域の形状を変形させる。これにより、予めトリミング領域が設定された画像が画像処理により外縁形状を変形されても、ユーザが意図した領域をトリミングすることができる。
【００８８】
上記実施の形態では、歪曲収差補正で変形したトリミング領域の内接する矩形領域を新しいトリミング領域として用いることで、ユーザの意図した画像を残しながら、トリミング領域が有効画像領域の外に出ないようにした。しかしながら、変形したトリミング領域の外接矩形を新しいトリミング領域として用いて、ユーザの意図した画像の範囲を完全に残すようにしてもよい。
【００８９】
また、単純に変形したトリミング領域の内接又は外接をとるのではなく、元のトリミング領域のアスペクト比を保ちつつ内接又は外接をとってもよい。
【００９０】
また、変形したトリミング領域の内部に、元のトリミング領域を平行移動し、平行移動したトリミング領域を新しいトリミング領域としてもよい。
【００９１】
上記実施の形態では、トリミング領域を変形する際、歪曲収差補正後の画像の外縁の形状に内接する矩形領域を有効画像領域とし、トリミング領域が有効画像領域に完全に含まれるようにした。しかしながら、図１２に示すように、トリミング領域の形状によっては、有効画像領域からはみ出していても、歪曲収差補正後の画像の内部に含まれる場合がある。そのような場合は、有効画像領域からはみ出すように、トリミング領域を変形してもよい。
【００９２】
また、本発明の目的は、以下の処理を実行することによって達成される。即ち、上述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）が記憶媒体に格納されたプログラムコードを読み出す処理である。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００９３】
また、プログラムコードを供給するための記憶媒体としては、次のものを用いることができる。例えば、フロッピー（登録商標）ディスク、ハードディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等である。または、プログラムコードをネットワークを介してダウンロードしてもよい。
【００９４】
また、コンピュータが読み出したプログラムコードを実行することにより、上記実施の形態の機能が実現される場合も本発明に含まれる。加えて、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【００９５】
更に、前述した実施形態の機能が以下の処理によって実現される場合も本発明に含まれる。即ち、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行う場合である。
【００９６】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した各実施の形態の機能が実現される場合も本発明に含まれる。加えて、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳなどが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現する場合も含まれる。この場合、上記プログラムは、該プログラムを記憶した記憶媒体から直接、又はインターネット、商用ネットワーク、若しくはローカルエリアネットワーク等に接続された不図示の他のコンピュータやデータベース等からダウンロードすることにより供給される。
【図面の簡単な説明】
【００９７】
【図１】本発明の第１の実施形態に係る画像処理装置の構成例を示すブロック図である。
【図２】図１の画像処理装置１におけるＧＵＩの一例を示す図である。
【図３】歪曲収差補正実行ボタン押下時に実行される歪曲収差補正を含む処理の流れを示すフローチャートである。
【図４】トリミング領域の情報の一例を示す図である。
【図５】歪曲収差補正前後の画像とトリミング領域の変化を示す図である。
【図６】図３におけるステップＳ６０６のトリミング領域変形処理の詳細を示すフローチャートである。
【図７】本発明の第２の実施形態における歪曲収差補正を含む処理の流れを示すフローチャートである。
【図８】第２の実施形態における新しいトリミング領域の取得方法を表す図である。
【図９】図７におけるステップＳ９０６の新しいトリミング領域の算出処理の詳細を示すフローチャートである（その１）。
【図１０】図７におけるステップＳ９０６の新しいトリミング領域の算出処理の詳細を示すフローチャートである（その２）。
【図１１】歪曲収差補正後のトリミング領域と新しいトリミング領域の変化を示す図である。
【図１２】歪曲収差補正後にトリミング領域が変形して有効画像領域からはみ出ても良い場合の一例を示す図である。
【図１３】歪曲収差補正した画像の一例を示す図であり、（ａ）は樽形に歪んだ画像を補正した場合、（ｂ）は糸巻形に歪んだ画像を補正した場合である。
【図１４】歪曲収差補正時の問題点を説明するための図である。
【符号の説明】
【００９８】
１  画像処理装置
１０１  ＣＰＵ
１０２  一次記憶装置
１０３  二次記憶装置
１０４  入力デバイス
１０５  出力デバイス
１０６  読込デバイス
１０７  レンズ特性データ供給部
４０１  画像表示部
４０２  トリミング実行ボタン
４０３  歪曲収差補正実行ボタン
４０４  リセットボタン
４０５  終了ボタン
【図１】
0004926877.tif 000002
【図２】
0004926877.tif 000003
【図３】
0004926877.tif 000004
【図４】
0004926877.tif 000005
【図５】
0004926877.tif 000006
【図６】
0004926877.tif 000007
【図７】
0004926877.tif 000008
【図８】
0004926877.tif 000009
【図９】
0004926877.tif 000010
【図１０】
0004926877.tif 000011
【図１１】
0004926877.tif 000012
【図１２】
0004926877.tif 000013
【図１３】
0004926877.tif 000014
【図１４】
0004926877.tif 000015