(57)【要約】【課題】複数ライン期間で処理に必要なサイクル数を平滑化することにより、回路に要求される演算速度を低減させる。【解決手段】  実施形態の画像処理装置は、複数のラインバッファにより構成され、入力画像を構成する複数の画素がライン単位で入力され、入力された画素を記憶する入力ラインバッファと、前記入力ラインバッファの各ラインバッファに対する書き込み及び読み出しを管理するバッファ管理情報を記憶するメモリと、前記入力ラインバッファの各ラインバッファに記憶された画素を参照してライン単位で画像処理を行う画像処理部と、前記画像処理部の処理の状態に応じて前記バッファ管理情報を更新する制御部とを具備する。【選択図】図１
2020046817.tif 000002
【特許請求の範囲】
【請求項１】
複数のラインバッファにより構成され、入力画像を構成する複数の画素がライン単位で入力され、入力された画素を記憶する入力ラインバッファと、
前記入力ラインバッファの各ラインバッファに対する書き込み及び読み出しを管理するバッファ管理情報を記憶するメモリと、
前記入力ラインバッファの各ラインバッファに記憶された画素を参照してライン単位で画像処理を行う画像処理部と、
前記画像処理部の処理の状態に応じて前記バッファ管理情報を更新する制御部と
を具備する画像処理装置。
【請求項２】
前記入力ラインバッファは、前記画像処理部におけるライン単位の画像処理に最低限必要なラインバッファ数に１つ以上のラインバッファを付加して構成される
請求項１に記載の画像処理装置。
【請求項３】
前記制御部は、前記入力画像の水平同期信号に同期して前記入力された画素を記憶させるラインバッファを切換えると共に、前記ライン単位の画像処理の処理の終了を検出することで前記画像処理において参照するラインバッファを切換えるように前記バッファ管理情報を更新する
請求項１に記載の画像処理装置。
【請求項４】
前記制御部は、前記水平同期信号に同期して前記入力ラインバッファに前記ライン単位の画素を記憶させると共に、前記画像処理部を制御して、前記入力ラインバッファに処理すべきライン単位の画素が既に記憶されている場合には、前記ライン単位の画像処理の処理の終了の検出によって前記処理すべきライン単位の画素を参照した画像処理を開始させ、前記入力ラインバッファに処理すべきライン単位の画素が記憶されていない場合には、前記水平同期信号に同期して前記処理すべきライン単位の画素を参照した画像処理を開始させる
請求項３に記載の画像処理装置。
【請求項５】
前記画像処理部が行う画像処理は、歪補正処理である
請求項１に記載の画像処理装置。
【請求項６】
前記画像処理部が行う画像処理は、前記ライン単位で必要なサイクル数が異なり、
前記画像処理部は、前記ライン単位で必要なサイクル数の最大値よりも１ライン単位の期間に実行可能なサイクル数が小さい
請求項１に記載の画像処理装置。
【請求項７】
前記画像処理部による画像処理後の画素を前記入力画像の水平同期信号に同期して出力する出力バッファ
を更に具備する請求項１に記載の画像処理装置。
【請求項８】
複数のラインバッファにより構成される入力ラインバッファに入力画像を構成する複数の画素をライン単位で書き込み、
前記入力ラインバッファを構成する複数のラインバッファのうちの１つのラインバッファに記憶された画素を読み出して画像処理部に与えることでライン単位で画像処理を実行させ、
前記入力ラインバッファの各ラインバッファに対する書き込み及び読み出しを管理するバッファ管理情報をメモリに記憶させると共に、前記入力ラインバッファへの画素の書き込み及び前記画像処理部のライン単位の画像処理の処理終了に基づいて前記バッファ管理情報を更新する
手順を具備する画像処理方法。
【請求項９】
コンピュータに、
複数のラインバッファにより構成される入力ラインバッファに入力画像を構成する複数の画素をライン単位で書き込み、
前記入力ラインバッファを構成する複数のラインバッファのうちの１つのラインバッファに記憶された画素を読み出して画像処理部に与えることでライン単位で画像処理を実行させ、
前記入力ラインバッファの各ラインバッファに対する書き込み及び読み出しを管理するバッファ管理情報をメモリに記憶させると共に、前記入力ラインバッファへの画素の書き込み及び前記画像処理部のライン単位の画像処理の処理終了に基づいて前記バッファ管理情報を更新する
手順を実行させるための画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、画像処理装置、画像処理方法及び画像処理プログラムに関する。
【背景技術】
【０００２】
デジタルカメラ等の撮像装置で被写体を撮像して得られた画像を画像処理する画像処理装置においては、デジタルカメラからリアルタイムで出力される撮像画像をラインバッファを介して取り込むことがある。この場合、通常、デジタルカメラからの画素（画素データ）のラインバッファへの伝送レートは一定であり、１ライン分の画素は、１水平同期周期内にラインバッファに転送されて格納される。
【０００３】
一方、画像処理装置においては、ラインバッファに格納された画像をライン単位で１水平同期周期内に処理する必要がある画像処理を行うことがある。また、デジタルカメラからの画像によっては、ライン毎に画像処理に要する時間が異なる場合がある。この場合には、ラインバッファには一定の書込みレートでリアルタイムに画素が書込まれるので、各ラインの処理に必要なサイクル数のうち最も多いサイクル数（以下、ピークサイクル数という）を考慮して、画像処理回路の動作周波数や演算器の設計が行われる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開２０１３−１３６４５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
実施形態は、複数ライン期間で処理に必要なサイクル数を平滑化することにより、回路に要求される演算速度を低減させることができる画像処理装置、画像処理方法及び画像処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
実施形態の画像処理装置は、複数のラインバッファにより構成され、入力画像を構成する複数の画素がライン単位で入力され、入力された画素を記憶する入力ラインバッファと、前記入力ラインバッファの各ラインバッファに対する書き込み及び読み出しを管理するバッファ管理情報を記憶するメモリと、前記入力ラインバッファの各ラインバッファに記憶された画素を参照してライン単位で画像処理を行う画像処理部と、前記画像処理部の処理の状態に応じて前記バッファ管理情報を更新する制御部とを具備する。
【図面の簡単な説明】
【０００７】
【図１】本発明の一実施の形態に係る画像処理装置を示すブロック図。
【図２】実施の形態の画像処理装置を用いて構成した歪補正装置を示すブロック図。
【図３】図２中の歪補正回路１に対応する構成の一例を示すブロック図。
【図４】歪補正処理を説明するためのフローチャート。
【図５】ライン単位の処理におけるラインバッファの書き込み及び読み出しの例を示す説明図。
【図６】横軸に歪処理に要するサイクル数をとり縦軸に画面のラインをとって、各ライン毎のサイクル数の変化を示す説明図。
【図７】処理シーケンスの一例を示す説明図。
【図８】図７と同一の記載方法によって、課題を有する処理シーケンスを示す説明図。
【図９】読み出し及び書き込みＩＤの制御及び画像処理の制御を説明するためのフローチャート。
【図１０】第１の実施の形態による平滑化処理を実施した場合の処理シーケンスを示す説明図。
【図１１】横軸に歪処理に要するサイクル数をとり縦軸に画面のラインをとって、各ライン毎のサイクル数の変化を示す説明図。
【図１２】評価に用いた４３の試験パターンについて、１水平同期期間内に処理すべきサイクル数の最大値を、ピークサイクル数を１としてラインバッファの数毎に示した図表。
【図１３】第２の実施の形態を説明するための説明図。
【図１４】第２の実施の形態を説明するための説明図。
【発明を実施するための形態】
【０００８】
以下、図面を参照して本発明の実施の形態について詳細に説明する。
（第１の実施の形態）
図１は本発明の第１の実施の形態に係る画像処理装置を示すブロック図である。また、図２は本実施の形態の画像処理装置を用いて構成した歪補正装置を示すブロック図である。
【０００９】
本実施の形態は１ライン分以上のバッファメモリを追加し、水平同期信号ｈｓｙｎｃと各ライン単位の処理の開始及び終了を示す信号とを用いて、書き込み及び読み出し（参照）の対象のラインバッファを制御することにより、処理するサイクル数を平滑化することを可能にするものである。
【００１０】
先ず、図２から図４を参照して本実施の形態の適用例である歪補正装置について説明する。なお、本実施の形態は、図２の歪補正装置に限らず、リアルタイムに一定レートでラインバッファに画素（画素データ）の書き込みを行い、ライン単位に処理を行う各種装置に適用可能である。
【００１１】
カメラによって取得した画像を、自動車の衝突防止や監視装置等に利用する場合等においては、その目的から超広角レンズが採用されることがあり、歪曲収差や倍率色収差が大きくなる傾向にある。図２の装置は、歪曲収差や倍率色収差によって画像に生じた歪みを、画像処理によって電気的に補正するものである。
【００１２】
図２の歪補正装置は、ＣＰＵ２５を備えている。ＣＰＵ２５は図示しないメモリに記憶されたプログラムに従って動作して各部を制御するようになっている。撮像部２２は、ＣＭＯＳセンサ等の図示しない撮像素子を備えている。撮像部２２は、図示しない光学系を介して入射した光学像を撮像素子によって光電変換することで、撮像信号（撮像画像）を取得する。撮像部２２の出力（撮像画像）は歪補正装置２１に与えられ、歪補正装置２１によって歪補正された後、バス２３を介してＤＲＡＭ２４に与えられて記憶されるようになっている。撮像部２２からの撮像画像は光学系の歪曲収差等による歪みを有しており、歪補正装置２１は、歪曲収差の補正等の各種画像処理を行う。
【００１３】
撮像部２２からのラスタスキャン順の撮像出力は歪補正装置２１を構成する歪補正回路１に入力される。歪補正回路１は、メモリ４に記憶されたパラメータを用いて、入力された撮像画像に対して歪補正及び倍率色収差補正を行ってポスト処理回路２に出力する。ポスト処理回路２は、入力された画像に対してガンマ補正及び色空間補正を行った後バッファ回路３に出力する。バッファ回路３は、入力された画像を一時保持した後、バス２３を介してＤＲＡＭ２４に出力する。こうして、ＤＲＡＭ２４には、歪補正された画像が記憶される。
【００１４】
ところで、関連技術の歪補正では、ラスタスキャン順に入力された撮像出力をラインバッファに一旦蓄積し、ラスタスキャン出力順に順次ＤＲＡＭへの書き込みを行う。関連技術における歪補正回路は、ラスタ順の出力（ラスタスキャン出力）に際して、当該出力画素が歪を受けなければあるべき本来の画素位置を求め、求めた画素位置の画素をラインバッファから読み出してＤＲＡＭに転送する。関連技術のラスタスキャン入力・ラスタスキャン出力では、画素出力に際して求めた画素位置の画素をラインバッファに格納しておく必要があり、ラインバッファとして歪の大きさに対応した十分な容量を確保しておく必要がある。
【００１５】
そこで、本件出願人は、先に出願した特願２０１７−０１２８７０号明細書において、ラスタスキャン入力・ランダム出力を採用することでラインバッファを削減する歪補正処理を提案した。この提案において採用するラスタスキャン入力・ランダム出力では、入力された画素を、当該画素が歪を受けなければあるべき本来の画素位置（以下、補正画素位置という）に対応するＤＲＡＭのアドレスに格納するように制御を行う。従って、ラインバッファとして比較的少ない容量のものを採用することができる。
【００１６】
次に、図３及び図４を参照して、先に出願した特願２０１７ー０１２８７０号明細書に記載したラスタスキャン入力・ランダム出力の歪補正処理について具体的に説明する。
【００１７】
図３は図２中の歪補正回路１に対応する構成の一例を示すブロック図である。
【００１８】
図３において、歪補正回路１は、ラインバッファ１１と、書き込み画素位置計算部１２と、読み出し画素位置計算部１３と、書き込み画素位置判定部１４と、パラメータ格納部１５と、画素補間部１６とから主に構成されている。
【００１９】
ラインバッファ１１は、撮像部２２からラスタスキャン順に読み込まれる入力画像の画素（入力画素）を、補正処理に必要なライン数だけ保持する。例えば、バイリニア補間を用いて歪曲収差の補正を行う場合、１〜２ライン分の画素を保持する。
【００２０】
書き込み画素位置計算部１２は、補正対象である読み出し画素Piを用いて補間した画素が含まれると推定される、書き込み画素領域を算出する。具体的には、読み出し画素Piの位置（vo, ho）（以下、画素Pi（vo, ho）と示す）を含む、周辺４点の画素｛Pi0（vo, ho）、Pi1（vo, ho-1）、Pi2（vo-1, ho-1）、Pi3（vo-1, ho）｝からなる読み出し画素位置集合を定義する。なお、本説明において、画素位置座標（v, h）は、画像左上を原点(0, 0)として、vを垂直画素位置、hを水平画素位置としている。
【００２１】
読み出し画素Pi0、Pi1、Pi2、Pi3のそれぞれについて、画素位置計算の関数を用い、対応する書き込み画素Po0、Po1、Po2、Po3の位置（vo’, ho’）、（vo’, ho-1’）、（vo-1’, ho-1’）、（vo-1’, ho’）を算出する。４点の画素Po0（vo’, ho’）、Po1（vo’, ho-1’）、Po2（vo-1’, ho-1’）、Po3（vo-1’, ho’）を頂点とする矩形領域が、書き込み画素領域となる。
【００２２】
画素位置計算には、例えば、多項式で表現される関数や、グリッドテーブル変換など、一般的な画素位置計算用の関数を用いることができる。ただし、画素位置計算関数は、逆関数が存在するものを用いる。
【００２３】
読み出し画素位置計算部１３は、書き込み画素領域内において、垂直位置、水平位置ともに整数となる画素の位置（書き込み画素候補Poc（v’, h’））を抽出する。そして、書き込み画素候補Poc（v’, h’）に対応する読み出し画素Pi（v”, h”）を、画素位置計算を行って算出する。なお、画素位置計算は、書き込み画素位置計算部１２で行った画素位置計算の逆関数を用いて行う。候補が複数ある場合は、全ての候補Poc（v’, h’）に対して読み出し画素Pi（v”, h”）を算出する。
【００２４】
書き込み画素位置判定部１４は、読み出し画素Pi（v”, h”）が集合に含まれている場合、当該画素Pi（v”, h”）に対する書き込み画素候補Poc（v’, h’）を、補正画素位置の書き込み画素Po（v’, h’）として確定する。
【００２５】
パラメータ格納部１５は、書き込み画素位置計算部１２および読み出し画素位置計算部１３における画素位置計算関数に用いるパラメータが格納されている。
【００２６】
画素補間部１６は、確定した書き込み画素Po（v’, h’）に対応する読み出し画素Pi（v”, h”）の画素値を算出する。通常、読み出し画素Pi（v”, h”）の座標は非整数であるので、例えば周辺の４画素を用いたバイリニア補間など、既存の補間手法を用いて画素値を算出する。書き込み画素Po（v’, h’）の画素値として、算出した画素値を出力する。出力された画素値は、DRAMなどのメモリ（図示せず）に格納される。なお、出力画素は補正を行った順に出力するため、出力画素の位置（補正画素位置）はランダムとなる。
【００２７】
次に、歪補正回路１における歪補正処理の手順を説明する。図４は歪補正処理を説明するためのフローチャートである。
【００２８】
まず、ラスタスキャン順に歪補正回路１に入力された画素を、ラインバッファ１１に拡充する（Ｓ１）。ラインバッファ１１には、画素補間部１６での処理に必要なライン数分、入力画素を格納する。例えば、バイリニア補間を用いる場合、補間対象画素の周辺２×２画素（４画素）の画素値が必要となるため、少なくとも１ライン＋１画素分の画素値を格納する。
【００２９】
次に、補正対象画素である読み出し画素Pi（vo, ho）を特定し、読み出し画素Piを用いて補間した画素が含まれると推定される、書き込み画素領域を算出する（Ｓ２）。具体的には、まず、読み出し画素Pi（vo, ho）を含む周囲４点の画素｛Pi0（vo, ho）、Pi1（vo, ho-1）、Pi2（vo-1, ho-1）、Pi3（vo-1, ho）｝からなる集合を定義する。すなわち、Pi1（vo, ho-1）は、Pi（vo, ho）の左隣の画素、Pi2（vo-1, ho-1）はPi（vo, ho）の左上の画素、Pi3（vo-1, ho）はPi（vo, ho）の上の画素である。次に、画素Pi0、Pi1、Pi2、Pi3のそれぞれについて、画素位置計算を行い、対応する書き込み画素Po0（vo’, ho’）、Po1（vo’, ho-1’）、Po2（vo-1’, ho-1’）、Po3（vo-1’, ho’）を算出する。
【００３０】
画素位置計算は、例えば、多項式で表現される関数を用いる場合、次の手順で行う。
（ａ）像高の算出：入力画素の位置を、左上を原点とする（v, h）の座標系から、光学中心を原点とする(x, y)の座標系に変換する。なお、両座標系とも、水平方向は右側を正とし、垂直方向は下側を正とする。また、光学中心から入力画素までの距離（像高）rを算出する。以下に示す（１）〜（３）式を用いて行う。
2020046817.tif 000003
【００３１】
（１）式において、vin は、垂直方向の入力画素位置（非負数）、[SENSOR_CROP_OFS_V]は、光学中心からの垂直画素位置オフセット（光学中心と、（v, h）座標系の原点との間の、垂直方向のオフセット）とする。また、（２）式において、hinは、水平方向の入力画素位置（非負数）、[SENSOR_CROP_OFS_H]は、光学中心からの水平画素位置オフセット（光学中心と、（v, h）座標系の原点との間の、水平方向のオフセット）とする。また、（３）式において、[NORM_SCALE]は正規化係数（非負数）とする。
【００３２】
なお、画像中心と光学中心とが一致する場合、[SENSOR_CROP_OFS_V]、[SENSOR_CROP_OFS_H]は、以下の（４）（５）式となる。
[SENSOR_CROP_OFS_V] = −(入力画像垂直サイズ/2 − 0.5)          …（４）式
[SENSOR_CROP_OFS_ H] = −(入力画像水平サイズ/2 − 0.5)          …（５）式
（ｂ）画素位置計算の像高スケールの算出：光学中心から距離rにある点が、画素位置変換によって光学中心方向に移動する距離r_scaleを算出する。以下に示す（６）式を用いて行う。
r_scale = P0 + P1*r + P2 * r2 + P3*r3 + P4*r4 + P5*r5 + P6*r6 + P7*r7 + P8*r8 + P9*r9 + P10*r10          …（６）式
（６）式において、Px（x = 0〜10 ）は、それぞれの次数に応じた多項式係数とする。
（ｃ）出力画素位置の算出：像高スケールを用いて入力画素位置を出力画素位置に変換し、（v, h）の座標系に戻す。以下に示す（７）（８）式を用いて行う。
vout = r_scale * y − [SENSOR_CROP_OFS_V]                        …（７）式
hout = r_scale*x − [SENSOR_CROP_OFS_ H]                         …（８）式
（７）式において、voutは垂直方向の出力画素位置（非負数）、（８）式において、houtは水平方向の出力画素位置（非負数）とする。
【００３３】
すなわち、（ａ）から（ｃ）の一連の手順により、読み出し画素Pi（vo, ho）、Pi1（vo, ho-1）、Pi2（vo-1, ho-1）、Pi3（vo-1, ho）が、それぞれ、書き込み画素Po0（vo’, ho’） 、Po1（vo’, ho-1’）、Po2（vo-1’, ho-1’）、Po3（vo-1’, ho’）に変換される。
【００３４】
なお、画素位置計算として、上述のような多項式で表現される関数を用いる場合、[SENSOR_CROP_OFS_V]、[SENSOR_CROP_OFS_H]、[NORM_SCALE]、Px（x = 0〜10 ）の各パラメータは予め設定されており、パラメータ格納部１５に格納されているものとする。
【００３５】
画素位置計算は、グリッドテーブル変換を用いて行うこともできる。グリッドテーブルとは、画素位置（v, h）をグリッドノードとした２次元のアドレステーブルである。各グリッドノードには、変換先の画素位置が格納されている。グリッドノードの間に位置する任意の画素位置に対応するアドレスは、近傍グリッドノードから補間することで算出する。画素位置計算としてグリッドテーブル変換を用いる場合、次の手順で行う。
（ｄ）参照グリッドノードの算出：参照グリッドノードとして、入力画素の左上に位置するグリッドノードを決定する。以下に示す（９）（１０）式を用いて行う。
ref_v = vin * GRID_PATCH_VSIZE_INV                    …（９）式
ref_h = hin * GRID_PATCH_HSIZE_INV                    …（１０）式
（９）式において、vin は、垂直方向の入力画素位置（非負数）、GRID_PATCH_VSIZE_INVは、垂直グリッドノード間距離の逆数とする。GRID_PATCH_VSIZE_INVは、以下の（１１）式を用いて算出する。
2020046817.tif 000004
【００３６】
（１１）式において、[SENSOR_CROP_VSIZE]は、入力画像垂直サイズ、[GRID_NODE_NUM_V]は、垂直グリッドノード数とする。
【００３７】
また、（１０）式において、hinは、水平方向の入力画素位置（非負数）、GRID_PATCH_HSIZE_INVは、水平グリッドノード間距離の逆数とする。GRID_PATCH_HSIZE_INVは、以下の（１２）式を用いて算出する。
2020046817.tif 000005
【００３８】
（１２）式において、[SENSOR_CROP_HSIZE]は、入力画像水平サイズ、[GRID_NODE_NUM_H]は、水平グリッドノード数とする。
（ｅ）重みの算出：入力画素位置から参照グリッドノードを含む周囲４点のグリッドノードに対する、垂直方向及び水平方向の距離の比に基づく重みを算出する。以下に示す（１３）（１４）式を用いて算出する。
weight_v = ref_v − [ref_v]                               …（１３）式
weight_h = ref_h − [ref_h]                               …（１４）式
（１３）（１４）式において、[]はガウス記号を表す。参照グリッドノードに関する垂直方向の重みは1−weight_vとなる。また、参照グリッドノードに関する水平方向の重みは、1−weight_hとなる。
（ｆ）出力画素位置の算出：参照グリッドノードを含む周囲４点のグリッドノードのテーブルと、入力画素位置に対する各グリッドノードの重みを用い、バイリニア補間によって、出力画素位置を算出する。
（ｆ−１）垂直方向の出力画素位置の算出
以下に示す（１５）〜（１７）式を用いて算出する。
v0out = table_v(ref_v, ref_h) * (1−weight_h) + table_v(ref_v, ref_h+1) * weight_h      …（１５）式
v1out = table_v(ref_v+1, ref_h) * (1−weight_h) + table_v(ref_v+1, ref_h+1) * weight_h      …（１６）式
vout = v0out * (1−weight_v) + v1out * weight_v          …（１７）式
（１５）（１６）式において、table_v(v, h)は、垂直画素位置グリッドテーブルとする。また、（１７）式において、voutは、は垂直方向の出力画素位置（非負数）である。
（ｆ−２）水平方向の出力画素位置の算出
以下に示す（１８）〜（２０）式を用いて算出する。
h0out = table_ h (ref_v, ref_h) * (1−weight_h) + table_ h (ref_v, ref_h+1) * weight_h      …（１８）式
h1out = table_h(ref_v+1, ref_h) * (1−weight_h) + table_h(ref_v+1, ref_h+1) * weight_h     …（１９）式
hout = h0out * (1−weight_h) + h1out * weight_v                 …（２０）式
（１８）（１９）式において、table_h(v, h)は、水平画素位置グリッドテーブルとする。また、（２０）式において、houtは、は水平方向の出力画素位置（非負数）である。
【００３９】
すなわち、（ｄ）から（ｆ）の一連の手順により、読み出し画素Pi（vo, ho）、Pi1（vo, ho-1）、Pi2（vo-1, ho-1）、Pi3（vo-1, ho）が、それぞれ、書き込み画素Po0（vo’, ho’） 、Po1（vo’, ho-1’）、Po2（vo-1’, ho-1’）、Po3（vo-1’, ho’）に変換される。
【００４０】
なお、画素位置計算として、上述のようなグリッドテーブル変換を用いる場合、[SENSOR_CROP_VSIZE]、[GRID_NODE_NUM_V]、[SENSOR_CROP_HSIZE]、[GRID_NODE_NUM_H]、table_v(v, h)、table_h(v, h)の各パラメータは予め設定されており、パラメータ格納部１５に格納されているものとする。
【００４１】
画素位置計算により算出された、４点の画素Po0（vo’, ho’） 、Po1（vo’, ho-1’）、Po2（vo-1’, ho-1’）、Po3（vo-1’, ho’）を頂点とする矩形領域が、書き込み画素領域として特定される。
【００４２】
次に、上記特定された矩形領域内において、垂直座標、及び、水平座標が共に整数となる画素位置（書き込み画素候補Poc（v’, h’））を抽出する。例えば、画素Po0（vo’, ho’） 、Po1（vo’, ho-1’）、Po2（vo-1’, ho-1’）、Po3（vo-1’, ho’）の各座標を、繰り上げ・繰り下げにより調整・整数化し、得られた画素位置に外接する矩形領域内のすべての画素位置を、書き込み画素候補Poc（v’, h’）とする（Ｓ３）。繰り上げ・繰り下げによる調整・整数化は、以下に示す（２１）（２２）式を用いて行う。なお、４点のうち、左側または上側に位置する画素については、（２１）式を用い、右側または下側に位置する画素については、（２２）式を用いる。
調整後画素位置 = [書き込み画素位置 − WRITE_AREA_DELTA]      …（２１）式
調整後画素位置 = [書き込み画素位置 + WRITE_AREA_DELTA]      …（２２）式
（２１）（２２）式において、WRITE_AREA_DELTAは整数化調整値であり、予め設定された値である。また、[]はガウス記号を表す。
【００４３】
続いて、Ｓ３で求めたすべての書き込み画素候補Poc（v’, h’）に対し、書き込み画素Po（v’, h’）であるか否かの判定を行う。判定をまだ行っていない書き込み画素候補Poc（v’, h’）がある場合（Ｓ４、Ｎｏ）、画素位置計算により、対応する読み出し画素Pi（v”, h”）を算出する（Ｓ５）。画素位置計算は、Ｓ２で用いた画素位置計算の逆関数を用いて行う。このとき、Pi（v”, h”）の垂直座標、水平座標は、非整数となる。
【００４４】
次に、Pi（v”, h”）の画素値を補間によって算出するために必要な画素を特定する。例えば、バイリニア補間によって画素値を算出する場合、Pi（v”, h”）の周囲４点の画素が補間に必要な画素となる。補間に必要なすべての画素が、集合に含まれている場合、当該読み出し画素Pi（v”, h”）に対応する書き込み画素候補Poc（v’, h’）を、書き込み画素Po（v’, h’）と確定する（Ｓ６、Ｙｅｓ）。
【００４５】
この場合、確定した書き込み画素Po（v’, h’）の画素値を、対応する読み出し画素Pi（v”, h”）の画素値を画素補間によって算出して出力する（Ｓ７）。なお、出力画素Po（v’, h’）は、ラスタスキャン順でなくランダムとなる。続いてＳ４に戻り、未判定の書き込み画素候補Poc（v’, h’）の有無を調べる。
【００４６】
一方、補間に必要な画素のうち、集合に含まれていない画素が存在する場合、当該読み出し画素Pi（v”, h”）に対応する書き込み画素候補Poc（v’, h’）は、書き込み画素Po（v’, h’）でないと確定する（Ｓ６、Ｎｏ）。この場合、画素補間は行わずに、Ｓ４に戻って、未判定の書き込み画素候補Poc（v’, h’）の有無を調べる。
【００４７】
Ｓ４において、Ｓ３で求めたすべての書き込み画素候補Poc（v’, h’）について、判定が行われている場合、画像補正処理の一連の手順を終了する（Ｓ４、Ｙｅｓ）。
【００４８】
このように、上述した歪補正回路１による歪補正処理では、撮像部２２からラスタスキャン順に読み込まれる入力画素を、この順に補正処理を行う。従って、補正に必要な入力画素の範囲を１乃至数ライン程度で抑えることができるため、入力画素を格納するラインバッファ１１の搭載量を低減することができ、製造コストを抑制することができる。
【００４９】
なお、ラインバッファ１１の搭載量は、画素補間の手法に応じて設定される。例えば、バイリニア法を用いる場合、２ライン程度搭載すればよいが、バイキュービック法を用いる場合、４ライン程度搭載する必要がある。
【００５０】
また、読み出し画素から書き込み画素を算出する画素位置計算の方法は、上述の方法に限定されない。すなわち、逆関数が存在する方法であれば、任意の方法を用いることができる。また、複数の画素位置計算方法を組み合わせて用いてもよい。
【００５１】
このように、図２の歪補正回路１として、先に出願した特願２０１７−０１２８７０号明細書の歪補正回路を採用した場合には、撮像部２２からラスタスキャン順に読み込まれる入力画素を、この順に補正処理することになる。例えば、２ライン分のラインバッファを用意し、これらのラインバッファに一定レートでリアルタイムに画素を入力しながらライン単位で処理を行って、補正画素位置の情報を含む画素を出力することができる。
（サイクル数の平滑化）
本実施の形態は、このようにリアルタイムに一定レートでラインバッファに画素（画素データ）の書き込みを行い、ライン単位に処理を行う各種装置に適用するものであり、図２の歪補正装置以外にも適用できるものである。
【００５２】
図５はこのようなライン単位の処理におけるラインバッファの書き込み及び読み出しの例を示す説明図である。なお、図５において、［０］，［１］はラインバッファに付されたＩＤ（以下、ラインバッファＩＤという）を示している。図５は１画面を構成する各ラインの開始位置に対応して水平同期信号ｈｓｙｎｃが発生し、この水平同期信号ｈｓｙｎｃに同期させて、所定の２ライン分の画素を記憶可能なラインバッファ［０］，［１］への、画素の書き込み、読み出しを制御することを示している。ラインバッファ［０］への１ライン分の書き込みの後、次に発生した水平同期信号ｈｓｙｎｃに同期してラインバッファ［１］への１ライン分の書き込みが行われる。また、ラインバッファ［１］の１ライン分の書き込み時に、ラインバッファ［０］から１ライン分の画素が読み出されて所定の画像処理が行われる。即ち、図５はラインバッファに対する書き込みと読み出しを別のラインバッファに分けて行う例である。
【００５３】
ところで、一般的に、画像の歪は画面上の位置に応じて大きさが異なる。例えば、超広角レンズを採用した場合にはたる型歪が生じ、画面の周辺部で画面中央に比べて歪が大きくなる。従って、ライン毎に歪補正に要するサイクル数が変化する。
【００５４】
図６は横軸に歪処理に要するサイクル数をとり縦軸に画面のラインをとって、各ライン毎のサイクル数の変化を示す説明図である。図６はたる型歪に対する歪補正処理の例を示しており、画面の上端及び下端から所定ライン数だけ離間したラインにおいてサイクル数がピークとなっている。図５のように、書き込みが行われるラインバッファと読み出しを行うラインバッファとを切換える場合には、ラインバッファに書き込まれたカメラからの画素は、水平同期信号ｈｓｙｎｃの発生から次の水平同期信号ｈｓｙｎｃが発生するまでの期間（以下、水平同期期間という）内において、読み出されて（参照されて）画像処理される。図６に示すサイクル数のピーク値（ピークサイクル数）の処理が水平同期期間内に実行されるように、回路設計が行われる。
【００５５】
図７はこのように回路設計を行った場合の処理シーケンスの一例を示す説明図である。図７においては、ラインバッファＩＤが［０］，［１］の２つのラインバッファ［０］，［１］を採用し、連続したｍ０〜ｍ３ラインの画素の処理を行う期間（ｍ０〜ｍ３ライン水平同期期間）を示している。なお、ｍ０，ｍ１ラインはピークサイクル数の処理を要するラインであるものとする。図７の垂直に延びた太線は、水平同期信号ｈｓｙｎｃの発生タイミングを示しており、水平同期信号ｈｓｙｎｃの発生毎に、ラインバッファへの書き込みが開始されると共に、ラインバッファを参照した（読み出した）画像処理が開始される。
【００５６】
図７のｍ０ライン水平同期期間には、ｍ０ラインの画素がラインバッファ［０］に書き込まれる。次のｍ１ライン水平同期期間には、ｍ１ラインの画素がラインバッファ［１］に書き込まれると共に、ラインバッファ［０］からｍ０ラインの画素が参照されて処理（処理ｍ０）される。次のｍ２ライン水平同期期間には、ｍ２ラインの画素がラインバッファ［０］に書き込まれると共に、ラインバッファ［１］からｍ１ラインの画素が参照されて処理（処理ｍ１）される。これらの処理ｍ０，ｍ１にはピークサイクル数を要するが、１水平同期期間以内にピークサイクル数の処理が可能なように回路設計が行われており、確実に処理は終了する。
【００５７】
次のｍ３ライン水平同期期間には、ｍ３ラインの画素がラインバッファ［１］に書き込まれる。また、ラインバッファ［０］からｍ２ラインの画素が参照されて処理（処理ｍ２）される。処理ｍ２に必要なサイクル数はピークサイクル数よりも十分に少なく、比較的短い処理時間で処理が終了する。このように、ｍ３ライン水平同期期間には、処理の空き時間が生じ無駄である。
【００５８】
一方、図８は、図７と同一ラインに対して図７と同一画像処理を行う場合において、処理の空き時間を低減するように、１水平同期期間に処理するサイクル数がピークサイクル数よりも少なくなることを許容した回路設計を行った場合の処理シーケンスを示す説明図である。図７と同一の記載方法によって示す。
【００５９】
この場合には、処理ｍ０は、ｍ１ライン水平同期期間内に終わらずに、斜線部に示すように、次のｍ２ライン水平同期期間まで延長されてしまう。しかし実際には、ｍ２ライン水平同期期間においてラインバッファ［０］にはｍ２ラインの画素が書き込まれることから、ｍ０ラインの画素を参照することはできず、斜線に示す処理は破綻してしまう。
【００６０】
同様に、処理ｍ１は、ｍ２ライン水平同期期間内に終わらずに、斜線部に示すように、次のｍ３ライン水平同期期間まで延長してしまう。しかし実際には、ｍ３ライン水平同期期間においてラインバッファ［１］にはｍ３ラインの画素が書き込まれることから、ｍ１ラインの画素を参照することはできず、斜線に示す処理は破綻してしまうことがある。
【００６１】
このように、１水平同期期間内にピークサイクル数の処理を行うことができない場合には、参照する前に書き込みが行われて処理が破綻してしまう。
【００６２】
そこで、本実施の形態においては、図２の歪補正回路１として図１に示す画像処理装置を採用する。以下、図１の装置を歪補正装置に適用した場合における構成について説明する。
【００６３】
図１において、制御部３１は、ＣＰＵ等を用いたプロセッサによって構成されて、図示しないメモリに記憶されたプログラムに従って動作して各部を制御するものであってもよいし、ハードウェアの電子回路で機能の一部又は全部を実現するものであってもよい。
【００６４】
入力ラインバッファ３２は、適用する画像処理に必要な数のラインバッファに１ライン分以上のラインバッファを付加して構成される。例えば、入力ラインバッファ３２は、上述した図３のラインバッファ１１に、１ライン分以上のラインバッファを付加して構成され、制御部３１に書き込み及び読み出しが制御されて、入力された画素を記憶すると共に画像処理部３３に出力する。
【００６５】
画像処理部３３は、図３の歪補正回路１と同様の処理機能を有し、制御部３１に処理が制御されて、メモリ４に記憶されたパラメータを用いて、ラスタスキャン入力・ランダム出力の歪補正処理を実現する。なお、本実施の形態を歪補正処理ではなく他の画像処理を行う装置に適用した場合には、画像処理部３３は適用した画像処理を実行する。
【００６６】
画像処理部３３は、制御部３１に制御されて、画像処理後の画素を、出力ラインバッファ３４に出力する。出力ラインバッファ３４は、制御部３１に制御されて、水平同期信号ｈｓｙｎｃに同期して、充填された画素を出力する。図２の例では出力ラインバッファ３４の出力はポスト処理回路２に与えられる。
【００６７】
制御部３１には、入力画像に基づく水平同期信号ｈｓｙｎｃが入力される。例えば、制御部３１には、撮像部２２から水平同期信号ｈｓｙｎｃが与えられる。制御部３１は、画像処理部３３に対して処理開始の信号（処理開始信号）を与えると共に、画像処理部３３から処理終了の信号（ｂｕｓｙ信号）を受信する。画像処理部３３は、制御部３１から処理開始信号が与えられると、ライン単位の処理を開始すると共にｂｕｓｙ信号を、処理を行っていることを示す例えば“１”に設定し、ライン単位の処理が終了するとｂｕｓｙ信号を、処理が終了していることを示す例えば“０”に設定して制御部３１に出力する。
【００６８】
制御部３１は、入力ラインバッファ３２が有する複数のラインバッファのそれぞれにＩＤ（以下、ラインバッファＩＤという）を付し、読み出し対象のラインバッファＩＤ（以下、読み出しＩＤという）及び書き込み対象のラインバッファＩＤ（以下、書き込みＩＤという）に関する情報（以下、バッファ管理情報という）をメモリ３１ａに記憶させて管理するようになっている。制御部３１は、バッファ管理情報である読み出しＩＤ及び書き込みＩＤを水平同期信号ｈｓｙｎｃ及びｂｕｓｙ信号に基づいて更新することで、リアルタイムに入力される画像に対する画像処理を破綻させることなく、処理すべきサイクル数を平滑化することを可能にしている。これにより、１水平同期期間において処理しなければならないサイクル数を低減することができる。
【００６９】
即ち、制御部３１は、水平同期信号ｈｓｙｎｃが入力されることで書き込みＩＤを更新し、ライン単位の処理が終了したことを示すｂｕｓｙ信号によって読み出しＩＤを更新する。つまり、制御部３１は、水平同期信号ｈｓｙｎｃが入力されると書き込みを行うラインバッファを切換え、水平同期信号ｈｓｙｎｃに同期して入力ラインバッファ３２への画素の書き込みを開始させる。即ち、図１の画像処理装置は、リアルタイムにライン単位の画素を入力ラインバッファ３２に取り込むことができる。
【００７０】
また、制御部３１は、ｂｕｓｙ信号によりライン単位の処理が終了したことが示されると、既に処理すべき画素が入力ラインバッファ３２に記憶されている場合には直ぐに参照を行うラインバッファを切換えて処理を開始し、処理すべき画素が入力ラインバッファ３２に記憶されていない場合には次の水平同期信号ｈｓｙｎｃに同期して読み出しＩＤにより指定されたラインバッファを参照して処理を行う。
【００７１】
このように、制御部３１は、ラインバッファを追加すると共に、読み出し及び書き込み対象のラインバッファを制御することで、各ラインの処理時間を平滑化する、即ち、１水平同期期間において処理すべきサイクル数を平滑化するようになっている。
【００７２】
なお、入力ラインバッファ３２は、上述したように、適用する画像処理に必要な数のラインバッファに１ライン分以上のラインバッファを付加するものと説明したが、画像処理部３３における処理速度が比較的遅い場合等においては、付加するラインバッファの数が少なければ、画像処理に破綻を来す場合もある。そこで、画像処理部３３は、画像処理に破綻を来す場合には、画像処理が破綻することを示すエラー出力を出力するようになっている。
【００７３】
次に、このように構成された実施の形態の動作について図９及び図１０を参照して説明する。図９は読み出し及び書き込みＩＤの制御並びに画像処理の制御を説明するためのフローチャートである。また、図１０は図８と同一の画像入力に対して図８において想定した画像処理性能を有する画像処理部３３において、本実施の形態による平滑化処理を実施した場合の処理シーケンスを示す説明図である。
【００７４】
本実施の形態においては、入力ラインバッファ３２は、図８の２つのラインバッファ［０］，［１］にラインバッファＩＤが［２］の１つのラインバッファ［２］を付加して構成される。なお、図９において、ｍＷは書き込みＩＤを示し、ｍＲは読み出しＩＤを示している。また、図１０は横軸に時間をとり、縦線によって水平同期信号ｈｓｙｎｃ（ｍ０）〜（ｍ４）の入力タイミングを示している。
【００７５】
図１０に示すように、入力ラインバッファ３２に画素入力として連続したｍ０，ｍ１，ｍ２，…ラインの画素がリアルタイムに入力されるものとする。制御部３１は、図９のステップＳ１１，Ｓ１２において、書き込みＩＤを示す変数ｍＷ及び読み出しＩＤを示す変数ｍＲを初期化してメモリ３１ａに記憶させる。なお、図１０の例では、制御部３１は、初期値としてｍＷ，ｍＲ＝［０］に設定する。これにより、書き込み対象のラインバッファとしてラインバッファ［０］が指定され、読み出し対象のラインバッファとしてもラインバッファ［０］が指定される。なお、制御部３１は、メモリ３１ａに記憶された変数ｍＷ，ｍＲを更新する場合には、例えば［０］、［１］、［２］、［０］、［１］、［２］…の順に更新して、３つのラインバッファを巡回的に使用するものとする。
【００７６】
制御部３１は、ステップＳ１３において、水平同期信号ｈｓｙｎｃが入力されたか否かを判定して、水平同期信号ｈｓｙｎｃの入力を待機する。制御部３１は、水平同期信号ｈｓｙｎｃ（ｍ０）が入力されると、ステップＳ１４において、画素入力を入力ラインバッファ３２に書き込む。図１０に示すように、入力されたｍ０ラインの画素はラインバッファ［０］に書き込まれる。
【００７７】
次に、制御部３１は、ステップＳ１５において、水平同期信号ｈｓｙｎｃの入力を待機する。制御部３１は、水平同期信号ｈｓｙｎｃ（ｍ１）が入力されると、処理をステップＳ１６に移行して、ｍＷを更新して［１］とし、ラインバッファ［１］にｍ１ラインの画素の書き込みを行う。また、この時点ではｂｕｓｙ信号は“０”であり、制御部３１は、この水平同期信号ｈｓｙｎｃ（ｍ１）の入力に同期して画像処理部３３に画像処理の処理開始を指示する。画像処理部３３は、読み出し対象のラインバッファ［０］を参照して、画像処理を開始する。例えば、画像処理部３３は、歪補正処理を実行すると共に、処理中であることを示すｂｕｓｙ信号を“１”にする。なお、画像処理部３３は、画像処理後の画素を順次出力ラインバッファ３４に出力する。
【００７８】
次に、制御部３１は、ステップＳ１８において、水平同期信号ｈｓｙｎｃが入力されたか否かを判定し、入力されていない場合には処理をステップＳ２２に移行し、入力されると処理をステップＳ１９に移行する。ステップＳ１９〜Ｓ２１において、入力された画素はラインバッファに書き込まれる。即ち、制御部３１は、画像処理部３３の画像処理が終了したか否かに拘わらず、水平同期信号ｈｓｙｎｃが入力されると、画素の書き込みを行う。これにより、リアルタイムでの画素の取込みが可能となる。
【００７９】
上述したように、ｍ１，ｍ２ラインについては、処理にピークサイクル数を要するラインであり、ｍ１ライン水平同期期間内には処理ｍ０は終了しておらず、制御部３１は、水平同期信号ｈｓｙｎｃ（ｍ２）が入力されると、ステップＳ１９においてｍＷを更新し、後述するステップＳ２０の判定の後、ステップＳ２１においてｂｕｓｙ信号に拘わらず入力ラインバッファ３２に、入力された画素を書き込む。即ち、この場合には、図１０に示すように、ｍＷは［２］となり、ラインバッファ［２］にｍ２ラインの画素が書き込まれる。
【００８０】
本実施の形態においては、制御部３１は、次のステップＳ２２において、画像処理部３３からのｂｕｓｙ信号によって、１ライン分の処理が終了したか否かを判定する。図１０の例では、制御部３１は、水平同期信号ｈｓｙｎｃ（ｍ２）が入力された時点では、ｍ０ラインに対する処理ｍ０が終了していないので、処理をステップＳ１８に戻して水平同期信号ｈｓｙｎｃの入力を待機する。即ち、本実施の形態においては、画像処理部３３は、ｍ０ラインに対する画像処理をｍ１ライン水平同期期間からｍ２ライン水平同期期間に跨いで実行することになる。この場合でも、本実施の形態においては、ラインバッファ［２］が付加されており、ラインバッファ［０］に書き込みを行うことなく、ｍ２ラインの画素の書き込みを行うことができ、ｍ２ライン水平同期期間においても、処理ｍ０に必要な画素をラインバッファ［０］から参照することが可能である。
【００８１】
画像処理部３３は、ｍ０ラインに対する画像処理が終了すると、ｂｕｓｙ信号を“１”から“０”に変更する。制御部３１は、画像処理部３３からのｂｕｓｙ信号が“０”に変化することで処理が終了したことを検出すると、ステップＳ２３において、ｍＲを更新して処理をステップＳ１７に戻す。ｍＲは更新されて［１］となり、制御部３１は、ステップＳ１７において、画像処理部３３に処理開始信号を出力して処理を開始させる。画像処理部３３は、ｂｕｓｙ信号を“１”に変更して、ラインバッファ［１］に格納されたｍ１ラインの画素を参照して画像処理を開始する。
【００８２】
なお、制御部３１は、出力ラインバッファ３４中のラインバッファに画素が充填されると、充填されたラインバッファから画素を次段に出力する。出力ラインバッファ３４からの出力は、制御部３１に制御されて、水平同期信号ｈｓｙｎｃに同期して行われる。
【００８３】
以後、同様の動作が繰り返され、水平同期信号ｈｓｙｎｃ（ｍ３）が入力されると、ｍＷが更新されて［０］となり（ステップＳ１９）、ラインバッファ［０］にｍ３ラインの画素が書き込まれる。また、ｍ３ライン水平同期期間の途中で、画像処理部３３からｍ１ラインの処理の終了を示す“０”のｂｕｓｙが与えられると、ｍＲを更新して［２］とし（ステップＳ２４）、ラインバッファ［２］に格納されたｍ２ラインの画素を参照して画像処理を開始する。図１０の例では、ｍ２ラインに対する処理ｍ２は、水平同期信号ｈｓｙｎｃ（ｍ４）が入力されるタイミングまでに終了する。
【００８４】
こうして、本実施の形態においては、各水平同期期間において処理すべきサイクル数を平滑化することができ、画像処理部３３においてピークサイクル数の処理に１水平同期期間よりも長い期間を要する場合でも、画像処理を破綻させることなく処理を継続することができる。
【００８５】
なお、ステップＳ２０では、ｍＷがｍＲより２ラインよりも多く進んだか否かを判定する。図１０の例では、１つのラインバッファ［２］が追加されており、書き込みＩＤが読み出しＩＤよりも２ライン分進んでいても、処理が破綻することはない。しかし、書き込みＩＤが読み出しＩＤより３ライン分進んだ場合、例えば、図１０において読み出しＩＤが［０］のときに、書き込みＩＤが［２］の次の［０］になると、処理ｍ０の参照を行うことができなくなり、処理が破綻する。そこで、この場合には、画像処理部３３は、制御部３１に制御されて、ステップＳ２５において、処理が破綻したことを示すエラー出力を出力する。
【００８６】
なお、ステップＳ２０の２ラインは、１つのラインバッファを付加した場合の例であり、付加するラインバッファの数を増やすことで、ステップＳ２０のライン数は大きくなり、より破綻しにくくなることは明らかである。
（評価）
撮像部２２の光学系として所定のレンズを採用した場合において、１水平同期期間内において歪補正のために必要なサイクル数について評価を行った。画像サイズ及びレンズを変化させた４３の試験パターンについて評価を行った。図１１は横軸に歪処理に要するサイクル数をとり縦軸に画面のラインをとって、各ライン毎のサイクル数の変化を示す説明図である。図１１の破線は図６と同様に２ライン分のラインバッファを用いて１水平同期期間内にピークサイクル数の処理を行う場合の特性を示している。また、図１１の実線は破線と同一の画像処理について、３ライン分のラインバッファを用いて上記平滑化処理によって１水平同期期間にピークサイクル数よりも少ない処理を行う場合において、破綻無く歪補正が行われるときの特性を示している。図１１に示すように、ピークサイクル数の処理が必要なラインについては、平滑化により、破綻無く歪補正を行うことができる１水平同期期間のサイクル数は低減されている。
【００８７】
図１２は評価に用いた４３の試験パターンについて、本実施の形態の平滑化を採用して処理が破綻しないように回路設計した場合において、１水平同期期間内に処理すべきサイクル数の最大値（以下、平滑ピークサイクル数という）を、ピークサイクル数を１としてラインバッファの数（バッファ数）毎に示した図表である。
【００８８】
図１２のバッファ数２は書き込み及び読み出しを異なる１つずつのラインバッファに設定した場合、即ち、本実施の形態の平滑化処理を採用しない場合を示しており、１水平同期期間内に処理すべきサイクル数はピークサイクル数である。これに対し、３ライン分のラインバッファを用いた場合には、４３の試験パターンのうち最も大きな平滑ピークサイクル数は０．９９であり、最も小さい平滑ピークサイクル数は０．６４であり、平均の平滑ピークサイクル数は０．９４であった。即ち、ラインバッファの数を１つ追加したことにより、１水平同期期間内に処理すべきサイクル数を平均で６％低減することができ、コストパフォーマンスを十分に向上させることが可能であった。
【００８９】
なお、図１２から明らかなように、ラインバッファ数が４，６，１０，１８，３４のいずれの場合においても、４３の試験パターンのうち最も大きな平滑ピークサイクル数、最も小さい平滑ピークサイクル数及び平均の平滑ピークサイクル数のいずれも、１よりも小さく、１水平同期期間内に処理すべきサイクル数を低減することができていることが分かる。図１２では示していないが、４３の全ての試験パターンについて、１水平同期期間内に処理すべきサイクル数を低減することが可能であった。なお、追加するラインバッファの数は多い程、サイクル数の低減効果が高いという結果が得られた。
【００９０】
このように本実施の形態においては、１ライン分以上のラインバッファを追加すると共に、各ライン単位の処理の終了を示す信号を利用して書き込み対象のラインバッファを切換えることで、ライン単位の処理を複数の水平同期期間に跨いで実行することを可能にしており、１水平同期期間に必要なサイクル数を平滑化することができる。また、書き込みは水平同期信号に同期して行っており、リアルタイムでの取込が可能である。こうして、１水平同期期間においてピークサイクル数よりも少ないサイクル数の処理能力を有する回路を用いて破綻無く処理を行うことを可能にすることができ、コストパフォーマンスを向上させることができる。
（第２の実施の形態）
図１３及び図１４は本発明の第２の実施の形態を説明するための説明図である。本実施の形態のハードウェア構成は図１と同様である。本実施の形態は、画像処理として圧縮処理を行う画像処理装置に適用したものである。
【００９１】
画像処理部３３は、制御部３１に制御されて、入力ラインバッファ３２を介して画素が入力され、ライン単位又はブロック単位で圧縮処理を施して出力ラインバッファ３４に出力するようになっている。画像処理部３３は、複数の圧縮方法による圧縮処理が可能である。例えば、画像処理部３３は、ｐｎｇ（Portable Network Graphics）圧縮を採用し、左隣の画素値との差を求めるＳＵＢフィルタ、真上の画素値との差を求めるＵＰフィルタ、左隣と真上のピクセルの平均値との差を求めるＡＶＧフィルタ、左隣、真上、左上の３つのピクセルからＰａｅｔｈ値を計算しその値との差を求めるＰａｅｔｈフィルタ及び圧縮処理を施さないＮｏｎｅフィルタを選択することができるようになっている。
【００９２】
従って、ｐｎｇ圧縮の各フィルタを用いた圧縮処理を実施するためには、入力ラインバッファ３２は、少なくとも２ライン分の画素を保持する必要がある。つまり、ｐｎｇ圧縮を行う回路は、最大で２ラインの画素を用いた圧縮を行うので、２ライン分の画素を保持するラインバッファと、読み出し用の１ライン分のラインバッファとを用いた計３ライン分のラインバッファを備える必要がある。
【００９３】
画像処理部３３は、所望の圧縮率が得られるように、フィルタを切換えながら複数回の圧縮処理を行う。いま、画像処理部３３は、１水平同期期間において、２回の圧縮処理を行うことが可能に設計されているものとする。この場合において、書込み用に２ライン分、読み出し用に１ライン分の計３ライン分のラインバッファを用いた場合には、１ラインの画素に対して、３種類の圧縮方式を用いて圧縮を行おうとすると、１水平同期期間内において圧縮処理を完了することができず、処理が破綻してしまう。
【００９４】
そこで、本実施の形態においては、入力ラインバッファ３２は、書込み用の２ライン分のラインバッファの外に、読み出し用として２ライン分のラインバッファの計４ライン分のラインバッファを用いて、第１の実施の形態と同様に、処理に必要なサイクル数を平滑化するようになっている。
【００９５】
次に、このように構成された実施の形態の動作について図１３及び図１４を参照して説明する。図１３は本実施の形態における入力ラインバッファ３２の書き込み及び読み出しの例を示す説明図である。
【００９６】
図１３において、［０］〜［３］は入力ラインバッファ３２中の各ラインバッファのラインバッファＩＤを示している。図１３では１画面を構成する各ラインの開始位置に対応して水平同期信号ｈｓｙｎｃが発生することを示している。本実施の形態においては、この水平同期信号ｈｓｙｎｃに同期させて、ラインバッファへの書き込みを行う。図１３の例では、圧縮処理に用いるために、２つのラインバッファに２ライン分の書き込みを行うと共に、書き込みが終了した２ライン分のラインバッファから読み出しを行う場合の書き込みライン及び読み出しラインを示している。図１３の例では、水平同期信号に同期して、ラインバッファ［０］及びラインバッファ［１］にそれぞれｎ０ライン及びｎ１ラインの画素を書き込み、ラインバッファ［２］及びラインバッファ［３］からｎ２ライン及びｎ３ラインの画素を読み出す。
【００９７】
図１４は本実施の形態における平滑化処理を実施した場合の処理シーケンスを示す説明図である。図１４は横軸に時間をとり、縦線によって水平同期信号ｈｓｙｎｃの入力タイミングを示している。図１４に示すように、入力ラインバッファ３２には画素入力として連続した，…，ｎ０，ｎ１，ｎ２，…ラインの画素がリアルタイムに入力される。
【００９８】
例えば、画像処理部３３は、先ずＳＵＢフィルタを用いた圧縮を行う。画像処理部３３は、この圧縮によって所望の圧縮率が達成された場合には、当該ラインの圧縮処理を終了し、所望の圧縮率が得られない場合には、次に例えばＵＰフィルタを用いた圧縮を行う。画像処理部３３は、ｐｎｇ圧縮のフィルタを切換えることで所望の圧縮率での圧縮を行って、圧縮後の画素を出力ラインバッファ３４に出力する。
【００９９】
図１４の例では、制御部３１に水平同期信号ｈｓｙｎｃ（ｎ４）が入力される時点で、入力ラインバッファ３２のラインバッファ［２］，［３］には、ｎ２，ｎ３ラインの画素が格納されているものとする。水平同期信号ｈｓｙｎｃ（ｎ４）が入力されると、ｎ４ライン水平同期期間において、ｎ４ラインの画素がラインバッファ［０］に書き込まれる。また、このｎ４ライン水平同期期間には、ｎ２ラインの画素がラインバッファ［２］から読み出されると共に、ｎ３ラインの画素ラインバッファ［３］から読み出されて、ｎ２ラインの圧縮処理に用いられる。即ち、画像処理部３３は、先ず、ＳＵＢフィルタを選択して、左隣の画素の画素値との差により各画素を圧縮処理する。画像処理部３３は、ＳＵＢフィルタを用いた圧縮処理によって所望の圧縮率が得られない場合には、次にＵＰフィルタを用いて、真上の画素値との差により各画素を圧縮する。
【０１００】
いま、画像処理部３３によるＵＰフィルタを用いた圧縮処理によっても所望の圧縮率が得られないものとする。本実施の形態による平滑化処理が採用されていない場合には、所望の圧縮率が得られない状態でｎ２ラインの処理を終了するか、又は画像処理部３３を１水平同期期間内において３回以上の圧縮処理が可能なように設計しておく必要がある。
【０１０１】
これに対し、本実施の形態においては、１つのラインバッファを追加しており、ｎ５ライト水平同期期間にラインバッファ［２］に書き込みを行う必要はない。また、ｂｕｓｙ信号によって圧縮処理の終了を検出し、この検出結果に基づいて、ラインバッファの書き込みＩＤ及び読み出しＩＤを制御しており、ｎ２ラインの圧縮処理をｎ５ライト水平同期期間まで延長して実行することが可能である。画像処理部３３は、ｎ５ライン水平同期期間において、ｎ２ラインに対して、Ａｖｇフィルタを用い、左隣と真上の画素の平均値との差による３回目の圧縮処理を実施する。これにより、所望の圧縮率が得られると、画像処理部３３は、ｎ２ラインの処理終了後にｎ３ラインに対する圧縮処理を開始する。
【０１０２】
こうして、圧縮処理が破綻することなく、１水平同期期間内において３回の圧縮処理が可能となる。なお、この場合でも、水平同期信号ｈｓｙｎｃ（ｈ５）の入力により、ラインバッファ［１］にｎ５ラインの画素の書き込みを行っており、リアルタイムでの書き込みが可能である。
【０１０３】
いずれの圧縮方式も処理時間が同一とした場合には、１ライン期間で２回圧縮方式を試行可能な場合と比較して、本実施の形態では１ライン追加することで、最大４回の試行が可能となる。
【０１０４】
このように本実施の形態においても、第１の実施の形態と同様の効果を得ることができる。
（変形例）
上記各実施の形態の画像処理装置は、リアルタイムに入力される画像に対して、ライン単位で処理を行うものである。このような装置としては、歪補正装置や圧縮装置だけでなく、種々の装置が考えられる。
【０１０５】
例えば、実施形態として鮮鋭化処理やぼかし処理を行う画像処理装置に適用してもよい。
【０１０６】
これらの処理は、所定の画素領域の複数の画素を用いた演算を行うものである。例えば、注目画素を中心とした３×３画素や５×５画素の画素領域の各画素を用いた演算によって、解像感を増す鮮鋭化処理やボケさせるぼかし処理等が行われる。この場合において、５×５画素の画素領域に対応したフィルタサイズの演算量は、３×３画素の画素領域に対応したフィルタサイズの演算量の例えば２５／９倍となる。
【０１０７】
注目画素が含まれる画像部分のエッジの密度に応じて、使用するフィルタサイズを切換えて画像処理が行われる。この場合、１水平同期期間内において確実な処理を行うためには、上記各実施の形態における平滑化処理を採用しなければ、全ての画素について最も大きいフィルタサイズによる演算を行うことを想定して回路設計を行う必要がある。
【０１０８】
これに対し、上記各実施の形態と同様に、本来のフィルタ処理に必要な数のラインバッファに１つ以上のラインバッファを追加し、ｂｕｓｙ信号によって各ラインのフィルタ処理の終了を検出し、この検出結果に基づいて、ラインバッファの書き込みＩＤ及び読み出しＩＤを制御することにより、複数ラインに跨がって各ラインのフィルタ処理を実行することが可能となる。これにより、画像処理部３３が１水平同期期間内に行う必要がある演算数を低減させることが可能である。
【０１０９】
また、実施形態としてモザイク処理を行う画像処理装置に適用してもよい。モザイク処理においても、色によってフィルタサイズを変化させる場合があり、上記各実施の形態と同様の平滑化処理を適用して、画像処理部３３が１水平同期期間内に行う必要がある演算数を低減させることが可能である。
【０１１０】
なお、本発明は、上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。また、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適当な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【符号の説明】
【０１１１】
１…歪補正回路、２…ポスト処理回路、２１…歪補正装置、２２…撮像部、２３…バス、２４…ＤＲＡＭ、２５…ＣＰＵ、３…バッファ回路、３１…制御部、３１ａ…メモリ、３２…入力ラインバッファ、３３…画像処理部、３４…出力ラインバッファ。
【図１】
2020046817.tif 000006
【図２】
2020046817.tif 000007
【図３】
2020046817.tif 000008
【図４】
2020046817.tif 000009
【図５】
2020046817.tif 000010
【図６】
2020046817.tif 000011
【図７】
2020046817.tif 000012
【図８】
2020046817.tif 000013
【図９】
2020046817.tif 000014
【図１０】
2020046817.tif 000015
【図１１】
2020046817.tif 000016
【図１２】
2020046817.tif 000017
【図１３】
2020046817.tif 000018
【図１４】
2020046817.tif 000019