(57)【要約】【課題】光源の経年変化や基準部の退色が発生しても基準部を検出できる。【解決手段】  読取部と、移動部と、基準部と、記憶部と、制御部と、を備え、制御部は、調整位置、又は取得位置において、調整判断値に基づき検出光量値を調整するか否かを判断する光量調整判断処理と、白色部を読み取るときに生成する階調値と黒色部を読み取るときに生成する階調値との差分である調整差分値が最大となるように新たな検出光量値を決定する光量調整処理と、黒色値と白色値とに基づき検出閾値を算出する閾値算出処理と、検出光量値で基準部に光を照射して読み取るときに生成する階調値と検出閾値とを比較して基準位置を検出する基準位置検出処理と、を実行する。 【選択図】図５
2018157365.tif 000002
【特許請求の範囲】
【請求項１】
光源から光を照射して、その反射光を主走査方向に１列に並んだ受光部で読み取ることにより階調値を生成する読取部と、
主走査方向に直交する副走査方向に前記読取部を移動させる移動部と、
黒色部と、白色部と、前記黒色部と前記白色部との境界である白黒境界部とを有する基準部であって、前記白黒境界部の位置は主走査方向または副走査方向における前記読取部の基準位置である基準部と、
前記基準位置を検出するときの前記光源の光量に対応する検出光量値を記憶する記憶部と、
制御部と、を備え、
前記制御部は、
前記読取部が前記黒色部及び前記白色部の両者と対向する副走査方向の調整位置、又は前記読取部が前記黒色部及び前記白色部の両者と対向し、且つ前記調整位置よりも前記白色部から離れた副走査方向の取得位置において、前記検出光量値で前記基準部に光を照射するときに前記読取部が生成する階調値である調整判断値に基づき前記検出光量値を調整するか否かを判断する光量調整判断処理と、
前記光量調整判断処理が前記検出光量値を調整すると判断したときに、前記調整位置において、前記基準部に光を照射して前記読取部が前記白色部を読み取るときに生成する階調値と前記読取部が前記黒色部を読み取るときに生成する階調値との差分である調整差分値が最大となるように新たな検出光量値を決定して前記記憶部に記憶する光量調整処理と、
前記読取部が前記黒色部を読み取るときに生成する階調値である黒色値と前記読取部が前記白色部を読み取るときに生成する階調値である白色値とに基づき検出閾値を算出する閾値算出処理と、
前記移動部により前記読取部を移動させながら、前記記憶部に記憶された前記検出光量値で前記光源から前記基準部に光を照射して前記読取部が読み取るときに生成する階調値と前記検出閾値とを比較して前記基準位置を検出する基準位置検出処理と、を実行することを特徴とする画像読取装置。
【請求項２】
前記記憶部は、前記黒色値、および前記白色値を記憶し、
前記閾値算出処理は、
前記光量調整判断処理が前記検出光量値を調整すると判断したときに、前記調整位置において前記新たな検出光量値で前記基準部に光を照射して前記読取部が読み取る前記黒色部の予め定められた所定領域である黒色領域に含まれる全ての階調値のうちで最も大きい階調値を新たな黒色値として取得して前記記憶部に記憶する黒色値取得処理と、
前記光量調整判断処理が前記検出光量を調整すると判断したときに、前記調整位置において前記新たな検出光量値で前記基準部に光を照射して前記読取部が読み取る前記白色部の予め定められた所定領域である白色領域に含まれる全ての階調値のうちで最も小さい階調値を新たな白色値として取得して前記記憶部に記憶する白色値取得処理と、
前記閾値算出処理は、前記記憶部に記憶された黒色値と前記記憶部に記憶された白色値との平均を前記検出閾値として算出することを特徴とする請求項１に記載の画像読取装置。
【請求項３】
前記制御部は、
前記光量調整判断処理が前記検出光量値を調整しないと判断したときに、前記調整位置、又は前記取得位置において、前記記憶部に記憶された前記検出光量値で前記基準部に光を照射して前記読取部が読み取るときに生成する階調値である再取得判断値に基づき前記黒色値、および前記白色値を取得するか否かを判断する再取得判断処理を実行し、
前記黒色値取得処理は、前記再取得判断処理が前記黒色値、および前記白色値を取得すると判断したときに、前記調整位置において前記記憶部に記憶された前記検出光量値で前記基準部に光を照射して前記読取部が読み取る前記黒色領域に含まれる全ての階調値のうちで最も大きい階調値を新たな黒色値として取得して前記記憶部に記憶し、
前記白色値取得処理は、前記再取得判断処理が前記黒色値、および前記白色値を取得すると判断したときに、前記調整位置において前記記憶部に記憶された前記検出光量値で前記基準部に光を照射して前記読取部が読み取る前記白色領域に含まれる全ての階調値のうちで最も小さい階調値を新たな白色値として取得して前記記憶部に記憶することを特徴とする請求項２に記載の画像読取装置。
【請求項４】
前記光量調整判断処理は、
前記調整位置、又は前記取得位置において、前記読取部が読み取るときに生成する主走査方向に１列の階調値のうちで主走査方向の前記黒色部の位置に対応する第１範囲に含まれる全ての階調値を平均した黒平均値を前記調整判断値の１つとして取得して前記記憶部に記憶する黒平均値取得処理と、
前記黒平均値が予め定められた第１閾値未満であるか否かを判断する黒判断処理と、を含み、
前記第１閾値は、前記黒色値の変動量の最大値であり、
前記光量調整判断処理は、前記黒判断処理が前記第１閾値以上であると判断したときに、前記検出光量値を調整すると判断し、前記黒判断処理が第１閾値未満であると判断したときに、前記検出光量値を調整しないと判断することを特徴とする請求項３に記載の画像読取装置。
【請求項５】
前記再取得判断処理は、
前記調整位置において前記読取部が読み取るときに生成する主走査方向に１列の階調値のうちで主走査方向の前記白色部の位置に対応する第２範囲に含まれる全ての階調値を平均した白平均値を前記再取得判断値として取得して前記記憶部に記憶する白平均値取得処理と、
前記再取得判断値が予め定められた第２閾値以上であるか否かを判断する白判断処理と、を含み、
前記第２閾値は、前記白色値の最大値を２で割算したときの整数部であり、
前記再取得判断処理は、前記白判断処理が前記第２閾値未満であると判断したときに、前記黒色値および前記白色値を取得すると判断し、前記白判断処理が前記第２閾値以上であると判断したときに、前記黒色値および前記白色値を取得しないと判断することを特徴とする請求項４に記載の画像読取装置。
【請求項６】
前記制御部は、
前記光量調整判断処理を実行する前に、前記記憶部に記憶された前記黒色値と前記白色値との平均を調整前検出閾値として算出する調整前閾値算出処理を実行し、
前記光量調整判断処理は、
前記白平均値から前記黒平均値を引き算して白黒差分値を前記調整判断値の１つとして算出して前記記憶部に記憶する白黒差分値算出処理と、
前記白黒差分値と前記調整前検出閾値との差が予め定められた第３閾値以上であるか否かを判断する白黒差分判断処理と、を備え、
前記第３閾値は、前記階調値の全階調数の１０％であり、
前記光量調整判断処理は、前記白黒差分判断処理が前記第３閾値未満であると判断したときに、前記検出光量値を調整すると判断し、前記白黒差分判断処理が前記第３閾値以上であると判断したときに、前記検出光量値を調整しないと判断することを特徴とする請求項５に記載の画像読取装置。
【請求項７】
装置本体の電源を遮断するために操作可能な電源スイッチを備え、
前記制御部は、
前記電源スイッチが操作されたときに、前記光量調整判断処理と、前記再取得判断処理と、前記光量調整処理と、前記閾値算出処理とを実行した後に、装置本体の電源を遮断する電源遮断処理を実行することを特徴とする請求項６に記載の画像読取装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像読取装置に関する。
【背景技術】
【０００２】
イメージセンサを移動させて原稿を読み取る画像読取装置において、基準マークを読み取ることによりイメージセンサの基準位置となるホームポジション位置を設定する技術が知られている。
【０００３】
特許文献１に記載の画像読取装置は、出力値から黒出力値を差し引いて、差し引いた値を白黒判別値と比較することにより基準マークの白色領域と黒色領域とを検出する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−１３５７３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
画像読取装置の経年変化により、イメージセンサの光源の光量低下と基準マークの黒色領域の退色とが発生することがある。この様なときに、イメージセンサの光源の光量低下により基準マークの白色領域を読み取ったときの出力値が低下してしまう。この場合でも基準マークの白色領域と黒色領域とを検出するために、特許文献１の画像読取装置において、事前に白黒判別値を小さく設定しておくことが考えられる。
【０００６】
しかしながら、基準マークは退色により黒色領域が薄くなっているため、事前に白黒判別値を小さく設定しておくと、基準マークの黒色領域を検出することができなくなってしまう虞がある。
【０００７】
そこで、本発明は上述した事情に鑑みてなされ、光源の経年変化により白色部の出力値が低下し、さらに基準部の退色により黒色部の出力値が高くなってしまっても、基準部を検出することができる画像読取装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、請求項１に記載の発明態様では、画像読取装置は、光源から光を照射して、その反射光を主走査方向に１列に並んだ受光部で読み取ることにより階調値を生成する読取部と、主走査方向に直交する副走査方向に前記読取部を移動させる移動部と、黒色部と、白色部と、前記黒色部と前記白色部との境界である白黒境界部とを有する基準部であって、前記白黒境界部の位置は主走査方向または副走査方向における前記読取部の基準位置である基準部と、前記基準位置を検出するときの前記光源の光量に対応する検出光量値を記憶する記憶部と、制御部と、を備え、前記制御部は、前記読取部が前記黒色部及び前記白色部の両者と対向する副走査方向の調整位置、又は前記読取部が前記黒色部及び前記白色部の両者と対向し、且つ前記調整位置よりも前記白色部から離れた副走査方向の取得位置において、前記検出光量値で前記基準部に光を照射するときに前記読取部が生成する階調値である調整判断値に基づき前記検出光量値を調整するか否かを判断する光量調整判断処理と、前記光量調整判断処理が前記検出光量値を調整すると判断したときに、前記調整位置において、前記基準部に光を照射して前記読取部が前記白色部を読み取るときに生成する階調値と前記読取部が前記黒色部を読み取るときに生成する階調値との差分である調整差分値が最大となるように新たな検出光量値を決定して前記記憶部に記憶する光量調整処理と、前記読取部が前記黒色部を読み取るときに生成する階調値である黒色値と前記読取部が前記白色部を読み取るときに生成する階調値である白色値とに基づき検出閾値を算出する閾値算出処理と、前記移動部により前記読取部を移動させながら、前記記憶部に記憶された前記検出光量値で前記光源から前記基準部に光を照射して前記読取部が読み取るときに生成する階調値と前記検出閾値とを比較して前記基準位置を検出する基準位置検出処理と、を実行する。
【０００９】
請求項２に記載の具体的態様では、前記記憶部は、前記黒色値、および前記白色値を記憶し、前記閾値算出処理は、前記光量調整判断処理が前記検出光量値を調整すると判断したときに、前記調整位置において前記新たな検出光量値で前記基準部に光を照射して前記読取部が読み取る前記黒色部の予め定められた所定領域である黒色領域に含まれる全ての階調値のうちで最も大きい階調値を新たな黒色値として取得して前記記憶部に記憶する黒色値取得処理と、前記光量調整判断処理が前記検出光量を調整すると判断したときに、前記調整位置において前記新たな検出光量値で前記基準部に光を照射して前記読取部が読み取る前記白色部の予め定められた所定領域である白色領域に含まれる全ての階調値のうちで最も小さい階調値を新たな白色値として取得して前記記憶部に記憶する白色値取得処理と、前記閾値算出処理は、前記記憶部に記憶された黒色値と前記記憶部に記憶された白色値との平均を前記検出閾値として算出する。
【００１０】
請求項３に記載の具体的態様では、前記制御部は、前記光量調整判断処理が前記検出光量値を調整しないと判断したときに、前記調整位置、又は前記取得位置において、前記記憶部に記憶された前記検出光量値で前記基準部に光を照射して前記読取部が読み取るときに生成する階調値である再取得判断値に基づき前記黒色値、および前記白色値を取得するか否かを判断する再取得判断処理を実行し、前記黒色値取得処理は、前記再取得判断処理が前記黒色値、および前記白色値を取得すると判断したときに、前記調整位置において前記記憶部に記憶された前記検出光量値で前記基準部に光を照射して前記読取部が読み取る前記黒色領域に含まれる全ての階調値のうちで最も大きい階調値を新たな黒色値として取得して前記記憶部に記憶し、前記白色値取得処理は、前記再取得判断処理が前記黒色値、および前記白色値を取得すると判断したときに、前記調整位置において前記記憶部に記憶された前記検出光量値で前記基準部に光を照射して前記読取部が読み取る前記白色領域に含まれる全ての階調値のうちで最も小さい階調値を新たな白色値として取得して前記記憶部に記憶する。
【００１１】
請求項４に記載の具体的態様では、前記光量調整判断処理は、前記調整位置、又は前記取得位置において、前記読取部が読み取るときに生成する主走査方向に１列の階調値のうちで主走査方向の前記黒色部の位置に対応する第１範囲に含まれる全ての階調値を平均した黒平均値を前記調整判断値の１つとして取得して前記記憶部に記憶する黒平均値取得処理と、前記黒平均値が予め定められた第１閾値未満であるか否かを判断する黒判断処理と、を含み、前記第１閾値は、前記黒色値の変動量の最大値であり、前記光量調整判断処理は、前記黒判断処理が前記第１閾値以上であると判断したときに、前記検出光量値を調整すると判断し、前記黒判断処理が第１閾値未満であると判断したときに、前記検出光量値を調整しないと判断する。
【００１２】
請求項５に記載の具体的態様では、前記再取得判断処理は、前記調整位置において前記読取部が読み取るときに生成する主走査方向に１列の階調値のうちで主走査方向の前記白色部の位置に対応する第２範囲に含まれる全ての階調値を平均した白平均値を前記再取得判断値として取得して前記記憶部に記憶する白平均値取得処理と、前記再取得判断値が予め定められた第２閾値以上であるか否かを判断する白判断処理と、を含み、前記第２閾値は、前記白色値の最大値を２で割算したときの整数部であり、前記再取得判断処理は、前記白判断処理が前記第２閾値未満であると判断したときに、前記黒色値および前記白色値を取得すると判断し、前記白判断処理が前記第２閾値以上であると判断したときに、前記黒色値および前記白色値を取得しないと判断する。
【００１３】
請求項６に記載の具体的態様では、前記制御部は、前記光量調整判断処理を実行する前に、前記記憶部に記憶された前記黒色値と前記白色値との平均を調整前検出閾値として算出する調整前閾値算出処理を実行し、前記光量調整判断処理は、前記白平均値から前記黒平均値を引き算して白黒差分値を前記調整判断値の１つとして算出して前記記憶部に記憶する白黒差分値算出処理と、前記白黒差分値と前記調整前検出閾値との差が予め定められた第３閾値以上であるか否かを判断する白黒差分判断処理と、を備え、前記第３閾値は、前記階調値の全階調数の１０％であり、前記光量調整判断処理は、前記白黒差分判断処理が前記第３閾値未満であると判断したときに、前記検出光量値を調整すると判断し、前記白黒差分判断処理が前記第３閾値以上であると判断したときに、前記検出光量値を調整しないと判断する。
【００１４】
請求項７に記載の具体的態様では、画像読取装置は、装置本体の電源を遮断するために操作可能な電源スイッチを備え、前記制御部は、前記電源スイッチが操作されたときに、前記光量調整判断処理と、前記再取得判断処理と、前記光量調整処理と、前記閾値算出処理とを実行した後に、装置本体の電源を遮断する電源遮断処理を実行する。
【発明の効果】
【００１５】
請求項１に記載の発明態様では、光量調整判断処理は、調整位置、又は取得位置において、検出光量値で基準部に光を照射するときに読取部が生成する階調値である調整判断値に基づき検出光量値を調整するか否かを判断し、光量調整処理は、検出光量値を調整すると判断したときに、調整位置において、読取部が白色部を読み取るときに生成する階調値と読取部が黒色部を読み取るときに生成する階調値との差分である調整差分値が最大となるように新たな検出光量値を決定して記憶部に記憶し、閾値算出処理は、黒色値と白色値とに基づき検出閾値を算出し、基準位置検出処理は、読取部を移動させながら、検出光量値で基準部に光を照射して読取部が読み取るときに生成する階調値と検出閾値とを比較して基準位置を検出する。よって、基準部を検出するときの検出光量値の光量調整が必要な場合には、検出光量値の光量調整を行い、白色値と黒色値とに基づき検出閾値を算出するため、白色部の出力値が低下し、黒色部の出力値が高くなってしまっても、基準部を検出することができる。
【００１６】
請求項２に記載の具体的態様では、黒色値取得処理は、検出光量値を調整すると判断したときに、調整位置において新たな検出光量値で基準部に光を照射して読取部が読み取る黒色部の黒色領域に含まれる全ての階調値のうちで最も大きい階調値を新たな黒色値として取得して記憶部に記憶し、白色値取得処理は、検出光量値を調整すると判断したときに、調整位置において新たな検出光量値で基準部に光を照射して読取部が読み取る白色部の白色領域に含まれる全ての階調値のうちで最も小さい階調値を新たな白色値として取得して記憶部に記憶し、閾値算出処理は、記憶部に記憶された黒色値と記憶部に記憶された白色値との平均を検出閾値として算出する。よって、光量調整された新たな検出光量値で基準部に光を照射して黒色値と白色値とを取得して、取得した黒色値と白色値との平均を検出閾値として算出しているため、精度良く基準部を検出することができる。
【００１７】
請求項３に記載の具体的態様では、再取得判断処理は、検出光量値を調整しないと判断したときに、調整位置、又は取得位置において、検出光量値で基準部に光を照射するときに読取部が生成する階調値である再取得判断値に基づき黒色値、および白色値を取得するか否かを判断し、黒色値取得処理は、黒色値、および白色値を取得すると判断したときに、調整位置において、読取部が読み取る黒色領域に含まれる全ての階調値のうちで最も大きい階調値を新たな黒色値として取得し、白色値取得処理は、黒色値、および白色値を取得すると判断したときに、調整位置において、読取部が読み取る白色領域に含まれる全ての階調値のうちで最も小さい階調値を白色値として取得する。よって、検出光量値の光量調整を実行しないときにでも、白色値、および黒色値を取得して検出閾値を算出することで、精度良く基準部を検出することができる。
【００１８】
請求項４に記載の具体的態様では、黒平均値取得処理は、調整位置、又は取得位置において、読取部が読み取るときに生成する黒色部の位置に対応する第1範囲に含まれる全ての階調値を平均した黒平均値を調整判断値の１つとして取得し、黒判断処理は、黒平均値が黒色値の変動量の最大値である第1閾値未満であるか否かを判断し、光量調整判断処理は、第1閾値以上であるときに、検出光量値を調整すると判断し、第1閾値未満であるときに、検出光量値を調整しないと判断する。よって、黒色値の変動量の最大値である第1閾値と黒平均値とを比較しているため、黒色値の変動量による影響のみで検出光量値を調整することなく、黒色部の退色等により黒出力が高くなってしまったときに、検出光量値を調整するため、精度良く検出光量値を調整することができる。
【００１９】
請求項５に記載の具体的態様では、白平均値取得処理は、調整位置において、読取部が読み取るときに生成する白色部の位置に対応する第２範囲に含まれる全ての階調値を平均した白平均値を再取得判断値として取得し、白判断処理は、再取得判断値が白色値の最大値を２で割ったときの整数部である第２閾値以上であるか否かを判断し、再取得判断処理は、第２閾値未満であるときに、黒色値および白色値を取得すると判断し、第２閾値以上であるときに、黒色値および白色値を取得しないと判断する。よって、白色値の最大値を２で割ったときの整数部である第２閾値と再取得判断値とを比較しているため、白色値が５０％変動するような場合でも、白色値の変動量による影響のみで黒色値および白色値を取得することなく、光源の経年変化等により白出力が低下してしまったときに、黒色値および白色値を取得するため、精度良く検出閾値を算出することができる。
【００２０】
請求項６に記載の具体的態様では、白黒差分値算出処理は、白平均値から黒平均値を引き算して白黒差分値を調整判断値の１つとして算出し、白黒差分判断処理は、白黒差分値と調整前検出閾値との差が階調値の全階調数の１０％である第３閾値以上であるか否かを判断し、光量調整判断処理は、第３閾値未満であるときに、検出光量値を調整すると判断し、第３閾値以上であるときに、検出光量値を調整しないと判断する。よって、階調値の全階調数の１０％である第３閾値を用いて比較しているため、白黒差分値と調整前検出閾値との差が階調値の全階調数の１０％未満小さくなってしまっても、検出光量値を調整することなく、光源の経年変化等により白出力が低下してしまったり、黒色部の退色等により黒出力が高くなってしまったりしたときに、検出光量値を調整するため、精度良く検出光量値を調整することができる。
【００２１】
請求項７に記載の具体的態様では、電源遮断処理は、電源スイッチが操作されたときに、光量調整判断処理と、再取得判断処理と、光量調整処理と、閾値算出処理とを実行した後に、装置本体の電源を遮断する。よって、装置本体の電源を遮断するときに、検出光量値を調整するか否か判断し、白色値、および黒色値を取得するか否かを判断して、検出光量値、又は白色値、および黒色値を取得しているため、再度、装置本体を起動したときに、基準部を精度良く検出することができる。
【図面の簡単な説明】
【００２２】
【図１】本発明の実施形態に係る画像読取装置ＳＭの内部構成を示す図面である。
【図２】原稿載置台ＤＴの上面図である。
【図３】基準部材ＢＭを説明する図面である。
【図４】画像読取装置ＳＭの電気的構成を示すブロック図である。
【図５】起動処理を示すフローチャートである。
【図６】詳細位置検出処理Ｕ３，Ｕ１３を示すフローチャートである。
【図７】ラフ位置検出処理Ｕ６を示すフローチャートである。
【図８】検出光量調整処理Ｕ１０，Ｄ６を示すフローチャートである。
【図９】閾値算出処理Ｕ１２を示すフローチャートである。
【図１０】シャットダウン処理を示すフローチャートである。
【図１１】第１最大値ＭＸ１および第２最小値ＭＮ２の記憶処理Ｄ８を示すフローチャートである。
【発明を実施するための形態】
【００２３】
＜画像読取装置ＳＭの構成＞
図１は、画像読取装置ＳＭの正面図を示す。図２は、原稿載置台ＤＴを上から見た上面図を示す。以下の説明において、図１の右方向を副走査方向の下流、図２の下方向を主走査方向の下流、図２の右方向を副走査方向の下流として説明する。画像読取装置ＳＭは、原稿載置台ＤＴと、原稿押え板ＣＶと、を備える。原稿載置台ＤＴは、本体ＭＢと、透明板ＴＰと、を備える。本体ＭＢは、様々な部材（例えば、透明板ＴＰ、読取部２０等）を収容するための筐体である。透明板ＴＰは、本体ＭＢに収容されており、本体ＭＢに固定されている。透明板ＴＰには、読取対象の原稿が載置される。原稿押え板ＣＶは、本体ＭＢの上部に配置されており、本体ＭＢに対して開閉可能である。原稿押え板ＣＶは、本体ＭＢの奥側（図１の紙面に垂直方向の奥側、図２の上側）に回転軸２８を備え、本体ＭＢの前側（図１の紙面に垂直方向の手前側、図２の下側）から開閉される。
【００２４】
画像読取装置ＳＭは、さらに、透明板ＴＰの下方で本体ＭＢに収容されている読取部２０を備える。読取部２０は、本体ＭＢに対して副走査方向（即ち図１の左右方向）に沿って移動可能である。読取部２０は、透明板ＴＰに載置される原稿の読取を実行する。読取部２０は、ＣＩＳ（Contact Image Sensorの略、密着型イメージセンサ）で構成され、具体的には、光源２１と、ロッドレンズ２４と、受光部２２と、を備える。光源２１は、緑色の発光ダイオードなどで構成され、透明板ＴＰに向けて、光を照射する。ロッドレンズ２４は、主に光源２１から照射される光の反射光を受光する。
【００２５】
受光部２２は、主走査方向に配列される２５９２個の光電変換素子２３を含み、図示しないシフトレジスタ、および増幅器を内蔵する。各光電変換素子２３の出力は、主走査方向の各画素における受光量である。光電変換素子２３の先頭画素は、図２に図示する主走査方向の最も上流に位置する画素であり、光電変換素子２３の最終画素は、図２に図示する主走査方向の最も下流に位置する画素である。本実施形態では、１ラインは、この主走査方向の先頭画素から最終画素までで構成される画素群である。１ライン毎の副走査方向における間隔は、３００ＤＰＩである。光電変換素子２３の画素毎の主走査方向における間隔は、３００ＤＰＩである。
【００２６】
図２において原稿載置台ＤＴの上面は、本体ＭＢの上面と、透明板ＴＰが原稿押え板ＣＶ側に露出した面とを有する。本体ＭＢには、回動軸２８が配置されている。透明板ＴＰは、図２において一点鎖線で示され、副走査方向に沿って伸びる長辺と、主走査方向に沿って伸びる短辺と、によって構成される矩形形状を有する。透明板ＴＰの露出する面は、図２において実線で示される。透明板ＴＰの露出する面のうち、主走査方向に最上流の位置であり、且つ副走査方向に最上流の位置が基準位置ＢＰである。基準位置ＢＰは、主走査方向の基準となる位置であるとともに、副走査方向の基準となる位置である。主走査方向の基準位置ＢＰは、後述する読取開始位置ＲＳＰである。副走査方向の基準位置ＢＰは、後述するホーム位置ＨＰから副走査方向に下流へ２００ライン目の位置である。透明板ＴＰの露出する面のうち、副走査方向に最下流の位置が最大読取位置ＭＳＥである。最大読取位置ＭＳＥは、後述するホーム位置ＨＰから副走査方向に下流へ３７００ライン目の位置である。透明板ＴＰには、基準位置ＢＰを基点として原稿ＧＳが載置される。図２では、Ａ４サイズの原稿ＧＳを横向きに置いたときの状態が２点鎖線で示される。回動軸２８は、原稿押え板ＣＶを開閉するときに回動する軸であり、本体ＭＢの主走査方向の上流側に２カ所配置されている。
【００２７】
画像読取装置ＳＭは、さらに、透明板ＴＰの上面に固定されている基準部材ＢＭを備える。基準部材ＢＭは、透明板ＴＰの副走査方向の上流側（即ち図２の左側）の端部に設けられている。基準部材ＢＭは、図３に示すように、白領域ＷＥと、黒領域ＢＥとを備える。基準部材ＢＭは、矩形形状であり、主走査方向に２２０ｍｍの長さであり、副走査方向に１０．２ｍｍの長さである。黒領域ＢＥは、図３において斜線を付して示され、基準部材ＢＭのうちで主走査方向の最も上流で、且つ副走査方向の最も下流の領域である。黒領域ＢＥは、矩形形状であり、主走査方向に２０ｍｍの長さであり、副走査方向に５．１ｍｍの長さである。白領域ＷＥは、基準部材ＢＭのうちで黒領域ＢＥを除いた残りの領域である。主走査方向に沿って延びる黒領域ＢＥと白領域ＷＥとの境界が、副白黒境界部ＳＳＢである。副走査方向に沿って延びる黒領域ＢＥと白領域ＷＥとの境界が、主白黒境界部ＭＳＢである。本実施形態では、基準部材ＢＭの主走査方向の長さは、読取部２０の主走査方向の読取範囲である２１８ｍｍよりも若干長い。読取部２０の連結部には、ガタがある。そのため、読取部２０は、基準部材ＢＭに対して主走査方向に最大１ｍｍ程度位置ズレが発生する虞がある。この様な場合でも、基準部材ＢＭは、読取部２０の読取範囲内で常に対向する。
【００２８】
次に、図３を参照して、第１記憶領域ＭＥ１、第２記憶領域ＭＥ２、第３記憶領域ＭＥ３、ホーム位置ＨＰ、および光量調整位置ＩＡＰについて説明する。ホーム位置ＨＰは、副走査方向の位置であり、副白黒境界部ＳＳＢから副走査方向に上流へ３０ライン目の位置である。副白黒境界部ＳＳＢの位置は、後述する処理ＵＡ３でＹｅｓと判断されたときの読取部２０の位置、または後述する処理ＵＢ１１でＹｅｓと判断されたときの読取部２０の位置である。読取部２０は、ホーム位置ＨＰを基準として、副走査方向に移動可能に構成されている。光量調整位置ＩＡＰは、副走査方向の位置であり、ホーム位置ＨＰから副走査方向に下流へ６０ライン目の位置である。後述する処理Ｕ１０，Ｄ６が、光量調整位置ＩＡＰにおいて実行される。第１範囲ＭＲ１は、主走査方向の範囲であり、光電変換素子２３の先頭画素から２００画素目までの範囲である。第２範囲ＭＲ２は、主走査方向の範囲であり、光電変換素子２３の２６１画素目から４６０画素目までの範囲である。第３範囲ＭＲ３は、主走査方向の範囲であり、光電変換素子２３の２０１画素目から２６０画素目までの範囲である。
【００２９】
第１記憶領域ＭＥ１は、図３の一点鎖線で示されるように、主走査方向の第１範囲ＭＲ１であり、且つ副走査方向の光量調整位置ＩＡＰから上流へ２０ライン目の位置から副走査方向に下流へ４０ライン目の位置までの範囲で囲まれる領域である。第２記憶領域ＭＥ２は、図３の二点鎖線で示されるように、主走査方向の第２範囲ＭＲ２であり、且つ副走査方向の光量調整位置ＩＡＰから上流へ２０ライン目の位置から副走査方向に下流へ４０ライン目の位置までの範囲で囲まれる領域である。第３記憶領域ＭＥ３は、図３の破線で示されるように、主走査方向の第１範囲ＭＲ１であり、且つ副走査方向のホーム位置ＨＰから上流へ２０ライン目の位置から副走査方向に下流へ４０ライン目の位置までの範囲で囲まれる領域である。本実施形態では、上述したように、読取部２０は、基準部材ＢＭに対して主走査方向に最大１ｍｍ程度位置ズレが発生する虞がある。また、処理Ｕ６において、８ライン毎に副白黒境界部ＳＳＢを検出しているため、副走査方向に最大８ラインの位置ズレが発生する。この様な位置ズレが発生した場合でも、各記憶領域は、黒領域ＢＥ、または白領域ＷＥからはみ出すことがないように設定される。
【００３０】
＜画像読取装置ＳＭの電気的構成＞
画像読取装置ＳＭの電気的構成について図４を参照して説明する。図４において、画像読取装置ＳＭは、ＣＰＵ３０、ＲＯＭ３１、ＲＡＭ３２、フラッシュＲＯＭ３３、デバイス制御部３４、アナログフロントエンド（以下、ＡＦＥという）３５、画像処理部３６、および駆動回路３７を主な構成要素として備える。これらの構成要素は、バス３８を介して、操作機構ＯＭ、および表示機構ＤＭに接続される。操作機構ＯＭは、電源ボタンなどの複数のキーによって構成させる。ユーザは、操作機構ＯＭを操作することによって、様々な指示を画像読取装置ＳＭに入力することができる。表示機構ＤＭは、様々な情報を表示するためのディスプレイである。
【００３１】
ＲＯＭ３１は、後述する起動処理、後述するシャットダウン処理、および各処理中のサブルーチンの処理など、画像読取装置ＳＭの各種動作を実行するためのプログラムを記憶する。ＣＰＵ３０は、ＲＯＭ３１から読み出されたプログラムに従って、各部の制御を行う。フラッシュＲＯＭ３３は、読み書き可能な不揮発性メモリであり、ＣＰＵ３０の制御処理により生成された各種のデータ、たとえば起動処理により取得された各種のデータなどを記憶する。ＲＡＭ３２は、ＣＰＵ３０の制御処理により生成された算出結果などを一時的に記憶する。
【００３２】
デバイス制御部３４は、読取部２０に接続され、ＣＰＵ３０からの命令に基づいて、光源２１の点灯または消灯を制御する信号、および光源２１に流れる電流値を制御する信号を光源２１に送信する。また、デバイス制御部３４は、ＣＰＵ３０からの命令に基づいて、多数の光電変換素子２３の電気信号を同時にシフトレジスタに転送するためのシリアルイン信号ＳＩおよびシフトレジスタの電気信号を順番に出力させるためのクロック信号ＣＬＫを受光部２２に送信する。読取部２０は、デバイス制御部３４からこれらの信号を受け取ると、光源２１を点灯させるとともに、受光部２２が受光した受光量に応じたアナログ信号をＡＦＥ３５に送信する。
【００３３】
ＡＦＥ３５は、読取部２０に接続され、ＣＰＵ３０からの命令に基づいて、読取部２０から送信されるアナログ信号をデジタルデータに変換する。ＡＦＥ３５は、予め定められた入力レンジおよび分解能を有する。例えば、分解能は、８ビットであるならば、「０」から「２５５」までの階調である。この場合、ＡＦＥ３５は、読取部２０から送信されたアナログ信号をデジタルデータとして８ビット（０〜２５５）の階調データに変換する。ＡＦＥ３５によって変換されたデジタルデータは、画像処理部３６に送信される。
【００３４】
画像処理部３６は、画像処理用の専用ＩＣであるＡＳＩＣから構成され、デジタルデータに黒補正処理を施す。画像処理部３６は、黒補正処理を施さないように設定することもできるし、黒補正処理を施すように設定することもできる。画像処理部３６は、黒補正処理を施すように設定されたときに、デジタルデータから黒補正データを引き算することで黒補正処理を施し、８ビットの階調値ＧＶを生成する。この階調値ＧＶは、バス３８を介してＲＡＭ３２に記憶される。画像処理部３６は、黒補正処理を施さないように設定されたときに、８ビットのデジタルデータをＲＡＭ３２に記憶する。画像処理部３６には、黒補正処理のために黒補正データが設定される。
【００３５】
駆動回路３７は、搬送モータＭＴに接続され、ＣＰＵ３０から送信される駆動指令に基づいて搬送モータＭＴを駆動する。駆動回路３７は、駆動指令により指令された回転量および回転方向に従って搬送モータＭＴを回転させる。搬送モータＭＴが所定量だけ回転すると、移動機構ＭＭが所定角度回転し、読取部２０が副走査方向に所定距離だけ搬送される。
【００３６】
＜画像読取装置ＳＭの動作＞
（起動処理）
次に、画像読取装置ＳＭの動作について図面を参照して説明する。画像読取装置ＳＭは、電源を投入したときに実行される起動処理、および電源を遮断するときに実行されるシャットダウン処理を主に実行する。図５に示す起動処理中の処理Ｕ１〜Ｕ１５、および図１０に示すシャットダウン処理中のＤ１〜Ｄ８は、ＣＰＵ３０が実行する処理である。
【００３７】
図５に示す起動処理は、画像読取装置ＳＭの電源が遮断された状態で、ユーザが電源を投入することにより、開始される。即ち、ＣＰＵ３０は、電源が投入された指令を受け取ることにより、起動処理を開始する。
【００３８】
ＣＰＵ３０は、デバイス制御部３４、および画像処理部３６等を初期化する（Ｕ１）。具体的には、ＣＰＵ３０は、主走査方向の読取解像度が３００ＤＰＩ、および副走査方向の読取解像度が３００ＤＰＩに対応するクロック信号ＣＬＫ及びシリアルイン信号ＳＩの設定をフラッシュＲＯＭ３３から取得し、デバイス制御部３４に設定する。ＣＰＵ３０は、光源２１の検出光量値ＤＩをフラッシュＲＯＭ３３から取得し、デバイス制御部３４に設定する。ＣＰＵ３０は、画像処理部３６に黒補正処理を施す設定を設定する。ＣＰＵ３０は、黒補正データをフラッシュＲＯＭ３３から取得し、画像処理部３６に設定する。本実施形態では、黒補正データは、例えば、工場出荷時に取得した１ラインの黒色のデジタルデータのうちで最も小さい値である。検出光量値ＤＩは、光源２１へ流す電流値と、光源２１を点灯する期間とである。検出光量値ＤＩは、工場出荷時において、光源２１へ流すことが可能な最大の電流値と、シリアルイン信号ＳＩの間隔のうちで点灯可能な最大期間とであり、処理Ｕ１０，Ｄ６で更新して記憶される。
【００３９】
ＣＰＵ３０は、位置閾値ＰＴＨを算出する（Ｕ２）。具体的には、ＣＰＵ３０は、第1最大値ＭＸ１と第２最小値ＭＮ２とをフラッシュＲＯＭ３３から取得する。ＣＰＵ３０は、取得した第１最大値ＭＸ１と第２最小値ＭＮ２とを平均して位置閾値ＰＴＨを算出する。ＣＰＵ３０は、位置閾値ＰＴＨを副位置閾値ＳＰＴＨとして設定し、位置閾値ＰＴＨを主位置閾値ＭＰＴＨとして設定する。本実施形態では、第１最大値ＭＸ１、および第２最小値ＭＮ２は、工場出荷時に記憶され、処理Ｕ１２、又は処理Ｄ８において更新して記憶される。
【００４０】
ＣＰＵ３０は、詳細位置検出処理を実行する（Ｕ３）。詳細は後述するため、ここでは概説する。ＣＰＵ３０は、駆動指令を送信して副走査方向に下流へ読取部２０を移動させる。ＣＰＵ３０は、第１範囲ＭＲ１の第１最小値ＭＮ１が副位置閾値ＳＰＴＨ未満であるか否かを判断する。ＣＰＵ３０は、副位置閾値ＳＰＴＨ未満であると判断した位置から副走査方向に上流へ３０ライン目の位置をホーム位置ＨＰとしてＲＡＭ３２に記憶する。ＣＰＵ３０は、駆動指令を送信して副走査方向に下流へ読取部２０を移動させる。ＣＰＵ３０は、第３範囲ＭＲ３において、主走査方向に２６０画素目から主走査方向に上流へ主位置閾値ＭＰＴＨ以上の値から主位置閾値ＭＰＴＨ未満の値へと変化した画素の位置を探索する。ＣＰＵ３０は、探索した画素の位置を境界位置ＢＤＰとして決定する。ＣＰＵ３０は、境界位置ＢＤＰから主走査方向に上流へ１０画素の階調値ＧＶを境界データ群ＢＤＧとして取得する。ＣＰＵ３０は、境界データ群ＢＤＧが全て黒色であるか否かを判断し、全て黒色であるときに境界位置ＢＤＰから主走査方向に上流へ１８５画素目の位置を読取開始位置ＲＳＰとしてＲＡＭ３２に記憶する。ＣＰＵ３０は、ホーム位置ＨＰ、および読取開始位置ＲＳＰを記憶したときに、位置フラグＰＦＧをオンにし、ホーム位置ＨＰ、または読取開始位置ＲＳＰを記憶しなかったときに、位置フラグＰＦＧをオフにする。
【００４１】
ＣＰＵ３０は、位置フラグＰＦＧがオンであるか否かを判断する（Ｕ４）。ＣＰＵ３０は、位置フラグＰＦＧがオンでない場合（Ｕ４：Ｎｏ）に、処理Ｕ６へ進み、位置フラグＰＦＧがオンである場合（Ｕ４：Ｙｅｓ）に、処理Ｕ５へ進む。処理Ｕ５に進むと、ＣＰＵ３０は、駆動部３７へ駆動指令を送信し、読取部２０をＲＡＭ３２に記憶したホーム位置ＨＰに移動させる（Ｕ５）。処理Ｕ５が終了すると、起動処理が終了する。
【００４２】
ＣＰＵ３０は、ラフ位置検出処理を実行する（Ｕ６）。詳細は後述するため、ここでは概説する。ＣＰＵ３０は、駆動指令を送信して副走査方向に上流へ読取部２０を移動させる。ＣＰＵ３０は、第1範囲ＭＲ１が黒色であり、且つ第２範囲ＭＲ２が白色であるか否かを判断する。ＣＰＵ３０は、第１範囲ＭＲ１が黒色であり、且つ第２範囲ＭＲ２が白色であると判断した副走査方向の位置から副走査方向に上流へ８ラインだけ読取部２０を移動させる。ＣＰＵ３０は、第１領域ＭＲ１に含まれる全ての階調値ＧＶを平均して黒平均値ＢＡＶＥとしてＲＡＭ３２に記憶し、第２領域ＭＲ２に含まれる全ての階調値ＧＶを平均して白平均値ＷＡＶＥとしてＲＡＭ３２に記憶する。ＣＰＵ３０は、白平均値ＷＡＶＥから黒平均値ＢＡＶＥを引き算して白黒差分値ＷＢｄｉｆを算出する。ＣＰＵ３０は、駆動指令を送信して副走査方向に上流へ読取部２０を移動させる。ＣＰＵ３０は、第１範囲ＭＲ１が白色であり、且つ第２範囲ＭＲ２が白色であるか否かを判断する。ＣＰＵ３０は、第１範囲ＭＲ１が白色であり、且つ第２範囲ＭＲ２が白色であると判断した位置から副走査方向に上流へ３０ライン目の位置をホーム位置ＨＰとしてＲＡＭ３２に記憶する。ＣＰＵ３０は、ホーム位置ＨＰを記憶したときに、位置フラグＰＦＧをオンにし、ホーム位置ＨＰを記憶しなかったときに、位置フラグＰＦＧをオフにする。
【００４３】
ＣＰＵ３０は、位置フラグＰＦＧがオンであるか否かを判断する（Ｕ７）。ＣＰＵ３０は、位置フラグＰＦＧがオンでない場合（Ｕ７：Ｎｏ）に、処理Ｕ１５へ進み、位置フラグＰＦＧがオンである場合（Ｕ７：Ｙｅｓ）に、処理Ｕ８へ進む。
【００４４】
ＣＰＵ３０は、黒平均値ＢＡＶＥが第１閾値ＴＨ１未満であるか否かを判断する（Ｕ８）。ＣＰＵ３０は、第１閾値ＴＨ１未満でないと判断（Ｕ８：Ｎｏ）すると、処理Ｕ１０へ進み。ＣＰＵ３０は、第１閾値ＴＨ１未満であると判断（Ｕ８：Ｙｅｓ）すると、処理Ｕ９へ進む。本実施形態では、第１閾値ＴＨ１は、「３０」である。第１閾値ＴＨ１の「３０」は、黒色を読み取ったときの階調値ＧＶの１ライン中のバラツキの最大値である。そのため、第1閾値ＴＨ１を「３０」とすることで、階調値ＧＶのバラツキにより誤判断することなく、基準部材ＢＭの黒色部ＢＥが経年変化等により退色して黒出力が高くなっているか否かを精度良く判断することができる。
【００４５】
ＣＰＵ３０は、白黒差分値ＢＷｄｉｆと位置閾値ＰＴＨとの差が第３閾値ＴＨ３以上であるか否かを判断する（Ｕ９）。具体的には、ＣＰＵ３０は、白黒差分値ＢＷｄｉｆから位置閾値ＰＴＨを引き算した値が第３閾値ＴＨ３以上であるか否かを判断する。ＣＰＵ３０は、引き算した値が第３閾値ＴＨ３以上である場合（Ｕ９：Ｙｅｓ）に、処理Ｕ１１へ進み、引き算した値が第３閾値ＴＨ３以上でない場合（Ｕ９：Ｎｏ）に、処理Ｕ１０へ進む。本実施形態では、第３閾値ＴＨ３は、「２５」である。第３閾値ＴＨ３の「２５」は、階調値ＧＶの階調数の１０％である。白黒差分値ＢＷｄｉｆと位置閾値ＰＴＨとの差が、階調数の１０％以上であることから、経年変化等により、黒出力、又は白出力が若干変化した場合でも基準部材ＢＭを検出することができる。
【００４６】
処理Ｕ９でＮｏと判断されるか、又は処理Ｕ８でＮｏと判断されると、ＣＰＵ３０は、検出光量調整処理を実行する（Ｕ１０）。詳細は後述するため、ここでは概説する。ＣＰＵ３０は、駆動指令を送信し、読取部２０を光量調整位置ＩＡＰへ移動させる。ＣＰＵ３０は、第２範囲ＭＲ２における階調値ＧＶの最小値から第１範囲ＭＲ１における階調値ＧＶの最大値を引き算した値が最大となるように調整した光量値を検出光量値ＤＩとして取得し、フラッシュＲＯＭ３３に記憶する。ＣＰＵ３０は、処理Ｕ１０が終了すると、処理Ｕ１２へ進む。
【００４７】
処理Ｕ９においてＹｅｓと判断されると、ＣＰＵ３０は、白平均値ＷＡＶＥが第２閾値ＴＨ２以上であるか否かを判断する（Ｕ１１）。ＣＰＵ３０は、白平均値ＷＡＶＥが第２閾値ＴＨ２以上であると判断（Ｕ１１：Ｙｅｓ）すると、処理Ｕ１３へ進み、白平均値ＷＡＶＥが第２閾値ＴＨ２以上でないと判断（Ｕ１１：Ｎｏ）すると、処理Ｕ１２へ進む。本実施形態では、第２閾値ＴＨ２は、階調値ＧＶの階調数である「２５５」を「２」で割算したときの整数部である「１２７」である。読取部２０の白出力は１ライン中の最大出力を「１００％」としたときに、１ライン中の最小出力は「５０％」となる場合があるため、この様な場合でも、第２閾値ＴＨ２を階調値ＧＶの階調数を「２」で割算したときの整数部とすることで、白出力の１ライン中のバラツキにより誤判断することなく、読取部２０の白出力が経年変化等により低下しているか否かを判断することができる。
【００４８】
処理Ｕ１１においてＮｏと判断されるか、又は処理Ｕ１０が終了すると、ＣＰＵ３０は、閾値算出処理を実行する（Ｕ１２）。詳細は後述するため、ここでは概説する。ＣＰＵ３０は、駆動指令を送信し、読取部２０をホーム位置ＨＰへ移動させる。ＣＰＵ３０は、第３記憶領域ＭＥ３内の階調値ＧＶを第３データ群ＤＧ３として取得する。ＣＰＵ３０は、取得した第３データ群ＤＧ３のうちで最も小さい階調値ＧＶを第３最小値ＭＮ３としてフラッシュＲＯＭ３３に記憶する。ＣＰＵ３０は、駆動指令を送信し、読取部２０を光量調整位置ＩＡＰへ移動させる。ＣＰＵ３０は、第１記憶領域ＭＥ１内の階調値ＧＶを第１データ群ＤＧ１として取得し、第２記憶領域ＭＥ２内の階調値ＧＶを第２データ群ＤＧ２として取得する。ＣＰＵ３０は、取得した第１データ群ＤＧ１のうちで最も大きい階調値ＧＶを第１最大値ＭＸ１としてフラッシュＲＯＭ３３に記憶し、取得した第２データ群ＤＧ２のうちで最も小さい階調値ＧＶを第２最小値ＭＮ２としてフラッシュＲＯＭ３３に記憶する。ＣＰＵ３０は、第１最大値ＭＸ１と第２最小値ＭＮ２との平均を主位置閾値ＭＰＴＨとして算出してＲＡＭ３２に記憶する。ＣＰＵ３０は、第１最大値ＭＸ１と第３最小値ＭＮ３との平均を副位置閾値ＳＰＴＨとして算出してＲＡＭ３２に記憶する。
【００４９】
処理Ｕ１１においてＹｅｓと判断されるか、又は処理Ｕ１２が終了すると、ＣＰＵ３０は、詳細位置検出処理を実行する（Ｕ１３）。処理Ｕ３と同様に、詳細は後述するため、ここでは概説する。ＣＰＵ３０は、駆動指令を送信して副走査方向に下流へ読取部２０を移動させる。ＣＰＵ３０は、第１範囲ＭＲ１の第１最小値ＭＮ１が副位置閾値ＳＰＴＨ未満であるか否かを判断する。ＣＰＵ３０は、副位置閾値ＳＰＴＨ未満であると判断した位置から副走査方向に上流へ３０ライン目の位置をホーム位置ＨＰとしてＲＡＭ３２に記憶する。ＣＰＵ３０は、駆動指令を送信して副走査方向に下流へ読取部２０を移動させる。ＣＰＵ３０は、第３範囲ＭＲ３において、主走査方向に２６０画素目から主走査方向に上流へ主位置閾値ＭＰＴＨ以上の値から主位置閾値ＭＰＴＨ未満の値へと変化した画素の位置を探索する。ＣＰＵ３０は、探索した画素の位置を境界位置ＢＤＰとして決定する。ＣＰＵ３０は、境界位置ＢＤＰから主走査方向の上流へ１０画素の階調値ＧＶを境界データ群ＢＤＧとして取得する。ＣＰＵ３０は、境界データ群ＢＤＧが全て黒色であるか否かを判断し、全て黒色であるときに境界位置ＢＤＰから主走査方向に上流へ１８５画素目の位置を読取開始位置ＲＳＰとしてＲＡＭ３２に記憶する。ＣＰＵ３０は、ホーム位置ＨＰ、および読取開始位置ＲＳＰを記憶したときに、位置フラグＰＦＧをオンにし、ホーム位置ＨＰ、または読取開始位置ＲＳＰを記憶しなかったときに、位置フラグＰＦＧをオフにする。
【００５０】
ＣＰＵ３０は、位置フラグＰＦＧがオンであるか否かを判断する（Ｕ１４）。ＣＰＵ３０は、位置フラグＰＦＧがオンである場合（Ｕ１４：Ｙｅｓ）に、処理Ｕ５へ進み、位置フラグＰＦＧがオンでない場合（Ｕ１４：Ｎｏ）に、処理Ｕ１５へ進む。処理Ｕ１５に進むと、ＣＰＵ３０は、表示指令を送信し、表示機構ＤＭに読取部２０の位置が特定できないことを表示させる。処理Ｕ１５が終了すると、起動処理が終了する。
【００５１】
（詳細位置検出処理Ｕ３，Ｕ１３）
図６に示す詳細位置検出処理Ｕ３，Ｕ１３が開始されると、ＣＰＵ３０は、読取部２０を副走査方向に下流へ１ラインだけ移動させて、１ラインの階調値ＧＶを取得する（ＵＡ１）。具体的には、ＣＰＵ３０は、駆動回路３７に駆動指令を送信して、読取部２０を副走査方向に下流へ１ラインだけ移動させる。ＣＰＵ３０は、光源２１を検出光量値ＤＩで点灯した状態で基準部材ＢＭを読み取ることにより、１ラインの各画素の階調値ＧＶを取得する。
【００５２】
ＣＰＵ３０は、第１最小値ＭＮ１を取得する（ＵＡ２）。具体的には、ＣＰＵ３０は、処理ＵＡ１において取得した１ラインの階調値ＧＶのうちで第１範囲ＭＲ１にある階調値ＧＶから最も小さい階調値ＧＶを第１最小値ＭＮ１として取得する。
【００５３】
ＣＰＵ３０は、第１最小値ＭＮ１が副位置閾値ＳＰＴＨ未満であるか否かを判断する（ＵＡ３）。ＣＰＵ３０は、第１最小値ＭＮ１が副位置閾値ＳＰＴＨ未満である場合（ＵＡ３：Ｙｅｓ）に、処理ＵＡ５に進み、第１最小値ＭＮ１が副位置閾値ＳＰＴＨ未満でない場合（ＵＡ３：Ｎｏ）に、処理ＵＡ４に進む。
【００５４】
ＣＰＵ３０は、繰り返し実行される処理ＵＡ１において、読取部２０が第１所定距離移動したか否かを判断する（ＵＡ４）。ＣＰＵ３０は、読取部２０が第１所定距離移動した場合（ＵＡ４：Ｙｅｓ）に、処理ＵＡ１１に進み、読取部２０が第１所定距離移動していない場合（ＵＡ４：Ｎｏ）に、処理ＵＡ１に進む。本実施形態では、第１所定距離は、９０ラインである。読取部２０がホーム位置ＨＰにある場合に、読取部２０が９０ライン目の位置まで進むと、基準部材ＢＭと対向しない位置まで移動する。詳細位置検出処理Ｕ３，Ｕ１３は、読取部２０がホーム位置ＨＰに位置するときに、基準部材ＢＭにおいて、副白黒境界部ＳＳＢ、及び主白黒境界部ＭＳＢを検出する処理である。読取部２０が第１所定距離である９０ライン移動すると、基準部材ＢＭが検出されなかったことになる。
【００５５】
処理ＵＡ３においてＹｅｓと判断されると、ＣＰＵ３０は、ホーム位置ＨＰを記憶する（ＵＡ５）。具体的には、ＣＰＵ３０は、処理ＵＡ３で副位置閾値ＳＰＴＨ未満であると判断した読取部２０の位置から副走査方向に上流へ３０ライン目の位置をホーム位置ＨＰとしてＲＡＭ３２に記憶する。
【００５６】
処理ＵＡ５が終了するか、又は処理ＵＡ１０においてＮｏと判断されると、ＣＰＵ３０は、読取部２０を副走査方向に下流へ１ラインだけ移動させて、１ラインの階調値ＧＶを取得する（ＵＡ６）。具体的には、ＣＰＵ３０は、駆動回路３７に駆動指令を送信して、読取部２０を副走査方向に下流へ１ラインだけ移動させる。ＣＰＵ３０は、光源２１を検出光量値ＤＩで点灯した状態で基準部材ＢＭを読み取ることにより、１ラインの各画素の階調値ＧＶを取得する。
【００５７】
ＣＰＵ３０は、境界位置ＢＤＰを決定する（ＵＡ７）。具体的には、ＣＰＵ３０は、処理ＵＡ６で取得した１ラインの階調値ＧＶのうちで主走査方向に２６０画素目の画素から主走査方向に上流へ主位置閾値ＭＰＴＨ未満となる画素を探索する。ＣＰＵ３０は、主位置閾値ＭＰＴＨ未満となる画素の位置を境界位置ＢＤＰとして決定する。本実施形態では、主走査方向に探索する範囲は、２６０画素目から２０１画素目までの第３範囲ＭＲ３である。
【００５８】
ＣＰＵ３０は、境界データ群ＢＤＧを取得する（ＵＡ８）。具体的には、ＣＰＵ３０は、処理ＵＡ６で取得した１ラインの階調値ＧＶのうちで境界位置ＢＤＰから主走査方向に上流へ１０画素の階調値ＧＶを境界データ群ＢＤＧとして取得する。
【００５９】
ＣＰＵ３０は、境界データ群ＢＤＧの階調値ＧＶは全て主位置閾値ＭＰＴＨ未満であるか否かを判断する（ＵＡ９）。ＣＰＵ３０は、境界データ群ＢＤＧの階調値ＧＶが全て主位置閾値ＭＰＴＨ未満である場合（ＵＡ９：Ｙｅｓ）に、処理ＵＡ１２に進み、境界データ群ＢＤＧの階調値ＧＶが主位置閾値ＭＰＴＨ以上である場合（ＵＡ９：Ｎｏ）に、処理ＵＡ１０に進む。
【００６０】
ＣＰＵ３０は、繰り返し実行される処理ＵＡ６において、読取部２０が第２所定距離移動したか否かを判断する（ＵＡ１０）。ＣＰＵ３０は、読取部２０が第２所定距離移動していない場合（ＵＡ１０：Ｎｏ）に、処理ＵＡ６に進み、読取部２０が第２所定距離移動した場合（ＵＡ１０：Ｙｅｓ）に、処理ＵＡ１１に進む。本実施形態では、第２所定距離は、６０ラインである。読取部２０が副白黒境界部ＳＳＢにある場合に、読取部２０が６０ライン進むと、基準部材ＢＭと対向しない位置まで移動する。読取部２０が第２所定距離である６０ラインだけ移動すると、基準部材ＢＭが検出されなかったことになる。
【００６１】
処理ＵＡ１０においてＹｅｓと判断されるか、又は処理ＵＡ４においてＹｅｓと判断されると、ＣＰＵ３０は、位置フラグＰＦＧをオフにしてＲＡＭ３２に記憶する（ＵＡ１１）。処理ＵＡ１１が終了すると、詳細位置検出処理Ｕ３，Ｕ１３が終了する。
【００６２】
処理ＵＡ９においてＹｅｓと判断されると、ＣＰＵ３０は、読取開始位置ＲＳＰを記憶する（ＵＡ１２）。具体的には、ＣＰＵ３０は、境界位置ＢＤＰから主走査方向に上流へ１８５画素目の位置を読取開始位置ＲＳＰとしてＲＡＭ３２に記憶する。
【００６３】
ＣＰＵ３０は、位置フラグＰＦＧをオンにしてＲＡＭ３２に記憶する（ＵＡ１３）。処理ＵＡ１３が終了すると、詳細位置検出処理Ｕ３，Ｕ１３が終了する。
【００６４】
（ラフ位置検出処理Ｕ６）
図７に示すラフ位置検出処理Ｕ６が開始されると、ＣＰＵ３０は、読取部２０を副走査方向に上流へ８ラインだけ移動させて、１ラインの階調値ＧＶを取得する（ＵＢ１）。具体的には、ＣＰＵ３０は、駆動回路３７に駆動指令を送信して、読取部２０を副走査方向に上流へ８ラインだけ移動させる。ＣＰＵ３０は、光源２１を検出光量値ＤＩで点灯した状態で基準部材ＢＭを読み取ることにより、１ラインの各画素の階調値ＧＶを取得する。また、処理ＵＢ１は、処理ＵＢ５においてＮｏと判断されたときにも実行される。
【００６５】
ＣＰＵ３０は、第1平均値ＡＶ１を算出する（ＵＢ２）。具体的には、ＣＰＵ３０は、処理ＵＢ１で取得した１ラインの階調値ＧＶのうちで第1範囲ＭＲ１にある全ての階調値ＧＶを平均して第1平均値ＡＶ１を算出する。
【００６６】
ＣＰＵ３０は、第２平均値ＡＶ２を算出する（ＵＢ３）。具体的には、ＣＰＵ３０は、処理ＵＢ１で取得した１ラインの階調値ＧＶのうちで第２範囲ＭＲ２にある全ての階調値ＧＶを平均して第２平均値ＡＶ２を算出する。
【００６７】
ＣＰＵ３０は、第１範囲ＭＲ１が黒色であり、且つ第２範囲ＭＲ２が白色であるか否かを判断する（ＵＢ４）。具体的には、ＣＰＵ３０は、第１平均値ＡＶ１が位置閾値ＰＴＨ未満であり、且つ第２平均値ＡＶ２が位置閾値ＰＴＨ以上である場合（ＵＢ４：Ｙｅｓ）に、第１範囲ＭＲ１が黒色であり、且つ第２範囲ＭＲ２が白色であると判断し、処理ＵＢ６に進む。ＣＰＵ３０は、第１平均値ＡＶ１が位置閾値ＰＴＨ以上であるか、又は第２平均値ＡＶ２が位置閾値ＰＴＨ未満である場合（ＵＢ４：Ｎｏ）に、第１範囲ＭＲ１が黒色でないか、又は第２範囲ＭＲ２が白色でないと判断し、処理ＵＢ５に進む。
【００６８】
ＣＰＵ３０は、繰り返し実行される処理ＵＢ１において、読取部２０が第３所定距離以上移動したか否かを判断する（ＵＢ５）。ＣＰＵ３０は、読取部２０が第３所定距離以上移動した場合（ＵＢ５：Ｙｅｓ）に、処理ＵＢ１２に進み、読取部２０が第３所定距離以上移動していない場合（ＵＢ５：Ｎｏ）に処理ＵＢ１に進む。本実施形態では、第３所定距離は、３６７０ラインである。読取部２０が最大読取位置ＭＳＥにある場合に、読取部２０が３６７０ラインだけ進むと、副白黒境界部ＳＳＢの位置まで移動する。ラフ位置検出処理Ｕ６は、基準部材ＢＭの副白黒境界部ＳＳＢを検出する処理である。読取部２０が第３所定距離である３６７０ラインだけ移動すると、基準部材ＢＭが検出されなかったことになる。
【００６９】
処理ＵＢ４においてＹｅｓと判断されると、ＣＰＵ３０は、黒平均値ＢＡＶＥ、及び白平均値ＷＡＶＥを記憶する（ＵＢ６）。具体的には、ＣＰＵ３０は、駆動回路３７に駆動指令を送信して、読取部２０を副走査方向の上流へ８ライン目の位置まで移動させる。ＣＰＵ３０は、光源２１を検出光量値ＤＩで点灯した状態で基準部材ＢＭを読み取ることにより、１ラインの各画素の階調値ＧＶを取得する。ＣＰＵ３０は、取得した１ラインの階調値ＧＶのうちで第１範囲ＭＲ１にある全ての階調値ＧＶを平均して黒平均値ＢＡＶＥを算出してＲＡＭ３２に記憶する。ＣＰＵ３０は、取得した１ラインの階調値ＧＶのうちで第２範囲ＭＲ２にある全ての階調値ＧＶを平均して白平均値ＷＡＶＥを算出してＲＡＭ３２に記憶する。
【００７０】
ＣＰＵ３０は、白平均値ＷＡＶＥから黒平均値ＢＡＶＥを引き算して白黒差分値ＷＢｄｉｆを算出する（ＵＢ７）。
【００７１】
処理ＵＢ７が終了するか、又は処理ＵＢ１２においてＮｏと判断されると、ＣＰＵ３０は、読取部２０を副走査方向に上流へ８ラインだけ移動させて、１ラインの階調値ＧＶを取得する（ＵＢ８）。具体的には、ＣＰＵ３０は、駆動回路３７に駆動指令を送信して、読取部２０を副走査方向の上流へ８ラインだけ移動させる。ＣＰＵ３０は、光源２１を検出光量値ＤＩで点灯した状態で基準部材ＢＭを読み取ることにより、１ラインの各画素の階調値ＧＶを取得する。
【００７２】
ＣＰＵ３０は、第１平均値ＡＶ１を算出する（ＵＢ９）。具体的には、ＣＰＵ３０は、処理ＵＢ８で取得した１ラインの階調値ＧＶのうちで第１範囲ＭＲ１にある全ての階調値ＧＶを平均して第１平均値ＡＶ１を算出する。
【００７３】
ＣＰＵ３０は、第２平均値ＡＶ２を算出する（ＵＢ１０）。具体的には、ＣＰＵ３０は、処理ＵＢ８で取得した１ラインの階調値ＧＶのうちで第２範囲ＭＲ２にある全ての階調値ＧＶを平均して第２平均値ＡＶ２を算出する。
【００７４】
ＣＰＵ３０は、第１範囲ＭＲ１が白色であり、且つ第２範囲ＭＲ２が白色であるか否かを判断する（ＵＢ１１）。具体的には、ＣＰＵ３０は、処理ＵＢ９で算出した第１平均値ＡＶ１が位置閾値ＰＴＨ以上であり、且つ処理ＵＢ１０で算出した第２平均値ＡＶ２が位置閾値ＰＴＨ以上である場合（ＵＢ１１：Ｙｅｓ）に、第１範囲ＭＲ１が白色であり、且つ第２範囲ＭＲ２が白色であると判断し、処理ＵＢ１４に進む。ＣＰＵ３０は、処理ＵＢ９で算出した第１平均値ＡＶ１が位置閾値ＰＴＨ未満であるか、又は処理ＵＢ１０で算出した第２平均値ＡＶ２が位置閾値ＰＴＨ未満である場合（ＵＢ１１：Ｎｏ）に、第１範囲ＭＲ１が白色でないか、又は第２範囲ＭＲ２が白色でないと判断し、処理ＵＢ１１に進む。
【００７５】
ＣＰＵ３０は、繰り返し実行される処理ＵＢ８において、読取部２０が第４所定距離移動したか否かを判断する（ＵＢ１２）。ＣＰＵ３０は、読取部２０が第４所定距離移動していない場合（ＵＢ１２：Ｎｏ）に、処理ＵＢ８に進み、読取部２０が第４所定距離移動した場合（ＵＢ１２：Ｙｅｓ）に、処理ＵＢ１３に進む。本実施形態では、第４所定距離は、５６ラインである。読取部２０が黒領域ＢＥにおいて副走査方向に最下流位置にある場合に、読取部２０が５６ラインだけ進むと、副白黒境界部ＳＳＢの位置まで移動する。読取部２０が５６ラインだけ移動すると、基準部材ＢＭが検出されなかったことになる。
【００７６】
処理ＵＢ１２においてＹｅｓと判断されるか、又は処理ＵＢ５においてＹｅｓと判断されると、ＣＰＵ３０は、位置フラグＰＦＧをオフにしてＲＡＭ３２に記憶する（ＵＢ１３）。処理ＵＢ１３が終了すると、ラフ位置検出処理Ｕ６が終了する。
【００７７】
処理ＵＢ１１においてＹｅｓと判断されると、ＣＰＵ３０は、ホーム位置ＨＰを記憶する（ＵＢ１４）。具体的には、ＣＰＵ３０は、処理ＵＢ１１でＹｅｓと判断した読取部２０の位置から副走査方向に上流へ３０ライン目の位置をホーム位置ＨＰとしてＲＡＭ３２に記憶する。ＣＰＵ３０は、駆動回路３７に駆動指令を送信して、読取部２０をホーム位置ＨＰに移動させる。
【００７８】
ＣＰＵ３０は、位置フラグＰＦＧをオンにしてＲＡＭ３２に記憶する（ＵＢ１５）。処理ＵＢ１４が終了すると、ラフ位置検出処理Ｕ６が終了する。
【００７９】
（検出光量調整処理Ｕ１０，Ｄ６）
図８に示す検出光量調整処理Ｕ１０，Ｄ６が開始されると、ＣＰＵ３０は、駆動指令を送信して読取部２０を光量調整位置ＩＡＰに移動させる（ＵＣ１）。具体的には、ＣＰＵ３０は、駆動回路３７に駆動指令を送信して読取部２０を光量調整位置ＩＡＰに移動させる。
【００８０】
ＣＰＵ３０は、光源２１の光量値を調整する（ＵＣ２）。具体的には、ＣＰＵ３０は、光源２１を最大の電流値で点灯させた状態で、基準部材ＢＭを照射し、その反射光を読み取ったときの第２範囲ＭＲ２における階調値ＧＶの最小値が「２５５」となるように、点灯期間を調整する。
【００８１】
ＣＰＵ３０は、第１範囲ＭＲ１の最大値を取得する（ＵＣ３）。具体的には、ＣＰＵ３０は、光源２１を処理ＵＣ２において調整した光量値で点灯した状態で基準部材ＢＭを読み取ることにより、１ラインの各画素の階調値ＧＶを取得する。ＣＰＵ３０は、取得した１ラインの階調値ＧＶのうちで第１範囲ＭＲ１にある階調値ＧＶから最も大きい階調値ＧＶを取得する。
【００８２】
ＣＰＵ３０は、第１最小最大差分値ＭＸＭＮｄｉｆ１を算出する（ＵＣ４）。具体的には、ＣＰＵ３０は、階調値ＧＶの最大値である「２５５」から処理ＵＣ３で取得した最も大きい階調値ＧＶを引き算して第１最小最大差分値ＭＸＭＮｄｉｆ１を算出する。
【００８３】
ＣＰＵ３０は、光源２１の光量値を１段階下げて１ラインの階調値ＧＶを取得する（ＵＣ５）。具体的には、ＣＰＵ３０は、点灯期間を１段階短くして光源２１を点灯させる。ＣＰＵ３０は、光源２１を１段階下げた光量で点灯した状態で基準部材ＢＭを読み取ることにより、１ラインの各画素の階調値ＧＶを取得する。本実施形態では、光量値を１段階下げることは、光源２１の電流値は変更せずに、光源２１の点灯期間を１画素出力する期間だけ短くすることである。
【００８４】
ＣＰＵ３０は、第２範囲ＭＲ２の最小値を取得する（ＵＣ６）。具体的には、ＣＰＵ３０は、処理ＵＣ５で取得した１ラインの階調値ＧＶのうちで第２範囲ＭＲ２にある階調値ＧＶから最も小さな階調値ＧＶを取得する。
【００８５】
ＣＰＵ３０は、第１範囲ＭＲ１の最大値を取得する（ＵＣ７）。具体的には、ＣＰＵ３０は、処理ＵＣ５で取得した１ラインの階調値ＧＶのうちで第１範囲ＭＲ１にある階調値ＧＶから最も大きな階調値ＧＶを取得する。
【００８６】
ＣＰＵ３０は、第２最大最小差分値ＭＸＭＮｄｉｆ２を算出する（ＵＣ８）。具体的には、ＣＰＵ３０は、処理ＵＣ６で取得した最も小さな階調値ＧＶから処理ＵＣ７で取得した最も大きな階調値ＧＶを引き算して第２最大最小差分値ＭＸＭＮｄｉｆ２を算出する。
【００８７】
ＣＰＵ３０は、第２最大最小差分値ＭＸＭＮｄｉｆ２が第１最大最小差分値ＭＸＭＮｄｉｆ１よりも大きいか否かを判断する（ＵＣ９）。ＣＰＵ３０は、第２最大最小差分値ＭＸＭＮｄｉｆ２が第１最大最小差分値ＭＸＭＮｄｉｆ１以下である場合（ＵＣ９：Ｎｏ）に、処理ＵＣ１１に進み、第２最大最小差分値ＭＸＭＮｄｉｆ２が第１最大最小差分値ＭＸＭＮｄｉｆ１よりも大きい場合（ＵＣ９：Ｙｅｓ）に、処理ＵＣ１０に進む。
【００８８】
ＣＰＵ３０は、第１最大最小差分値ＭＸＭＮｄｉｆ１をＲＡＭ３２に記憶する（ＵＣ１０）。具体的には、ＣＰＵ３０は、第２最大最小差分値ＭＸＭＮｄｉｆ２を第１最大最小差分値ＭＸＭＮｄｉｆ１としてＲＡＭ３２に記憶する。ＣＰＵ３０は、処理ＵＣ１０が終了すると、処理ＵＣ５へ進む。
【００８９】
処理ＵＣ９においてＮｏと判断されると、ＣＰＵ３０は、処理ＵＣ５において１段階下げられた光源２１の光量値を検出光量値ＤＩとして取得する（ＵＣ１１）。本実施形態では、検出光量値ＤＩは、光源２１の電流値と光源２１の点灯期間とであり、最大電流値と処理ＵＣ５で最終的に決定された点灯期間である。処理ＵＣ１１が終了すると、検出光量調整処理Ｕ１０，Ｄ６が終了する。
【００９０】
（閾値算出処理Ｕ１２）
図９に示す閾値算出処理Ｕ１２が開始されると、ＣＰＵ３０は、読取部２０をホーム位置ＨＰに移動させる（ＵＤ１）。具体的には、ＣＰＵ３０は、駆動回路３７に駆動指令を送信して読取部２０をホーム位置ＨＰに移動させる。
【００９１】
ＣＰＵ３０は、第３記憶領域ＭＥ３内の階調値ＧＶである第３データ群ＤＧ３を取得する（ＵＤ２）。具体的には、ＣＰＵ３０は、駆動回路３７に駆動指令を送信して読取部２０を副走査方向に上流へ２０ライン目の位置まで移動させる。ＣＰＵ３０は、駆動回路３７に駆動指令を送信して読取部２０を副走査方向に下流へ４０ライン目の位置まで移動させながら、光源２１を検出光量値ＤＩで点灯した状態で１ライン毎に基準部材ＢＭを読み取ることにより、４１ラインの各画素の階調値ＧＶを取得する。ＣＰＵ３０は、取得した４１ラインの各画素の階調値ＧＶのうちで４１ラインの第１範囲ＭＲ１の階調値ＧＶを第３データ群ＤＧ３として取得する。
【００９２】
ＣＰＵ３０は、読取部２０を光量調整位置ＩＡＰに移動させる（ＵＤ３）。具体的には、ＣＰＵ３０は、駆動回路３７に駆動指令を送信して読取部２０を光量調整位置ＩＡＰに移動させる。
【００９３】
ＣＰＵ３０は、第１記憶領域ＭＥ１内の階調値ＧＶである第１データ群ＤＧ１、および第２記憶領域ＭＥ２内の階調値ＧＶである第２データ群ＤＧ２を取得する（ＵＤ４）。具体的には、ＣＰＵ３０は、駆動回路３７に駆動指令を送信して読取部２０を副走査方向の上流へ２０ライン目の位置まで移動させる。ＣＰＵ３０は、駆動回路３７に駆動指令を送信して読取部２０を副走査方向の下流へ４０ライン目の位置まで移動させながら、光源２１を検出光量値ＤＩで点灯した状態で１ライン毎に基準部材ＢＭを読み取ることにより、４１ラインの各画素の階調値ＧＶを取得する。ＣＰＵ３０は、４１ラインの各画素の階調値ＧＶのうちで４１ラインの第１範囲ＭＲ１の階調値ＧＶを第１データ群ＤＧ１として取得し、４１ラインの各画素の階調値ＧＶのうちで４１ラインの第２範囲ＭＲ２の階調値ＧＶを第２データ群ＤＧ２として取得する。
【００９４】
ＣＰＵ３０は、第１最大値ＭＸ１をフラッシュＲＯＭ３３に記憶する（ＵＤ５）。具体的には、ＣＰＵ３０は、第１データ群ＤＧ１のうちで最も大きい階調値ＧＶを第１最大値ＭＸ１としてフラッシュＲＯＭ３３に記憶する。
【００９５】
ＣＰＵ３０は、第２最小値ＭＮ２をフラッシュＲＯＭ３３に記憶する（ＵＤ６）。具体的には、ＣＰＵ３０は、第２データ群ＤＧ２のうちで最も小さい階調値ＧＶを第２最小値ＭＮ２としてフラッシュＲＯＭ３３に記憶する。
【００９６】
ＣＰＵ３０は、第３最小値ＭＮ３をフラッシュＲＯＭ３３に記憶する（ＵＤ７）。具体的には、ＣＰＵ３０は、第３データ群ＤＧ３のうちで最も小さい階調値ＧＶを第３最小値ＭＮ３としてフラッシュＲＯＭ３３に記憶する。
【００９７】
ＣＰＵ３０は、主位置閾値ＭＰＴＨを算出する（ＵＤ８）。具体的には、ＣＰＵ３０は、第１最大値ＭＸ１と第２最小値ＭＮ２とを平均して主位置閾値ＭＰＴＨを算出する。
【００９８】
ＣＰＵ３０は、副位置閾値ＳＰＴＨを算出する（ＵＤ９）。具体的には、ＣＰＵ３０は、第１最大値ＭＸ１と第３最小値ＭＮ３とを平均して副位置閾値ＳＰＴＨを算出する。処理ＵＤ９が終了すると、閾値算出処理Ｕ１２が終了する。
【００９９】
（シャットダウン処理）
図１０に示すシャットダウン処理は、画像読取装置ＳＭの電源が投入されている状態で、ユーザが操作機構ＯＭの電源ボタンを押下することにより、開始される。即ち、ＣＰＵ３０は、電源ボタンが押下された指令を受け取ることにより、シャットダウン処理を開始する。
【０１００】
ＣＰＵ３０は、デバイス制御部３４、および画像処理部３６等を初期化する（Ｄ１）。具体的には、ＣＰＵ３０は、主走査方向の読取解像度が３００ＤＰＩ、および副走査方向の読取解像度が３００ＤＰＩに対応するクロック信号ＣＬＫ及びシリアルイン信号ＳＩの設定をフラッシュＲＯＭ３３から取得し、デバイス制御部３４に設定する。ＣＰＵ３０は、光源２１の検出光量値ＤＩをフラッシュＲＯＭ３３から取得し、デバイス制御部３４に設定する。ＣＰＵ３０は、画像処理部３６に黒補正処理を施す設定を設定する。ＣＰＵ３０は、黒補正データをフラッシュＲＯＭ３３から取得し、画像処理部３６に設定する。
【０１０１】
ＣＰＵ３０は、読取部２０を光量調整位置ＩＡＰに移動させて、１ラインの階調値ＧＶを取得する（Ｄ２）。具体的には、ＣＰＵ３０は、駆動回路３７に駆動指令を送信して、読取部２０を副走査方向の光量調整位置ＩＡＰに移動させる。ＣＰＵ３０は、光源２１を検出光量値ＤＩで点灯した状態で基準部材ＢＭを読み取ることにより、１ラインの各画素の階調値ＧＶを取得する。
【０１０２】
ＣＰＵ３０は、第１平均値ＡＶ１を算出する（Ｄ３）。具体的には、ＣＰＵ３０は、処理Ｄ２で取得した１ラインの階調値ＧＶのうちで第１範囲ＭＲ１にある全ての階調値ＧＶを平均して第１平均値ＡＶ１を算出する。
【０１０３】
ＣＰＵ３０は、第２平均値ＡＶ２を算出する（Ｄ４）。具体的には、ＣＰＵ３０は、処理Ｄ２で取得した１ラインの階調値ＧＶのうちで第２範囲ＭＲ２にある全ての階調値ＧＶを平均して第２平均値ＡＶ２を算出する。
【０１０４】
ＣＰＵ３０は、第１平均値ＡＶ１が第１閾値ＴＨ１未満であるか否かを判断する（Ｄ５）。ＣＰＵ３０は、第１平均値ＡＶ１が第１閾値ＴＨ１未満である場合（Ｄ５：Ｙｅｓ）に、処理Ｄ７に進み、第１平均値ＡＶ１が第１閾値ＴＨ１未満でない場合（Ｄ５：Ｎｏ）に、処理Ｄ６に進む。
【０１０５】
ＣＰＵ３０は、検出光量調整処理を実行する（Ｄ６）。詳細は前述したため、ここでは概説する。ＣＰＵ３０は、駆動指令を送信し、読取部２０を光量調整位置ＩＡＰへ移動させる。ＣＰＵ３０は、第２範囲ＭＲ２における階調値ＧＶの最小値から第１範囲ＭＲ１における階調値ＧＶの最大値を引き算した値が最大となるように調整した光量値を検出光量値ＤＩとして取得し、フラッシュＲＯＭ３３に記憶する。
【０１０６】
ＣＰＵ３０は、第２平均値ＡＶ２が第２閾値ＴＨ２以上であるか否かを判断する（Ｄ７）。ＣＰＵ３０は、第２平均値ＡＶ２が第２閾値ＴＨ２以上でない場合（Ｄ７：Ｎｏ）に、処理Ｄ８へ進み、第２平均値ＡＶ２が第２閾値ＴＨ２以上である場合（Ｄ７：Ｙｅｓ）に、処理Ｄ９へ進む。
【０１０７】
ＣＰＵ３０は、第１最大値ＭＸ１と、第２最小値ＭＮ２とを記憶する（Ｄ８）。詳細は後述するため、ここでは概説する。ＣＰＵ３０は、駆動指令を送信し、読取部２０を光量調整位置ＩＡＰへ移動させる。ＣＰＵ３０は、第１記憶領域ＭＥ１内の階調値ＧＶを第１データ群ＤＧ１として取得し、第２記憶領域ＭＥ２内の階調値ＧＶを第２データ群ＤＧ２として取得する。ＣＰＵ３０は、取得した第１データ群ＤＧ１のうちで最も大きい階調値ＧＶを第１最大値ＭＸ１としてフラッシュＲＯＭ３３に記憶し、取得した第２データ群ＤＧ２のうちで最も小さい階調値ＧＶを第２最小値ＭＮ２としてフラッシュＲＯＭ３３に記憶する。処理Ｄ８が終了すると、電源を遮断する（Ｄ９）。処理Ｄ９が終了すると、シャットダウン処理が終了する。
【０１０８】
（第１最大値ＭＸ１および第２最小値ＭＮ２の記憶処理Ｄ８）
図１１に示す第１最大値ＭＸ１および第２最小値ＭＮ２の記憶処理Ｄ８が開始されると、ＣＰＵ３０は、読取部２０を光量調整位置ＩＡＰに移動させる（ＤＡ１）。具体的には、ＣＰＵ３０は、駆動回路３７に駆動指令を送信して読取部２０を光量調整位置ＩＡＰに移動させる。
【０１０９】
ＣＰＵ３０は、第１記憶領域ＭＥ１内の階調値ＧＶである第１データ群ＤＧ１、および第２記憶領域ＭＥ２内の階調値ＧＶである第２データ群ＤＧ２を取得する（ＤＡ２）。具体的には、ＣＰＵ３０は、駆動回路３７に駆動指令を送信して読取部２０を副走査方向に上流へ２０ライン目の位置まで移動させる。ＣＰＵ３０は、駆動回路３７に駆動指令を送信して読取部２０を副走査方向に下流へ４０ライン目の位置まで移動させながら、光源２１を検出光量値ＤＩで点灯した状態で１ライン毎に基準部材ＢＭを読み取ることにより、４１ラインの各画素の階調値ＧＶを取得する。ＣＰＵ３０は、取得した４１ラインの各画素の階調値ＧＶのうちで４１ラインの第１範囲ＭＲ１の階調値ＧＶを第１データ群ＤＧ１として取得し、４１ラインの各画素の階調値ＧＶのうちで４１ラインの第２範囲ＭＲ２の階調値ＧＶを第２データ群ＤＧ２として取得する。
【０１１０】
ＣＰＵ３０は、第１最大値ＭＸ１をフラッシュＲＯＭ３３に記憶する（ＤＡ３）。具体的には、ＣＰＵ３０は、処理ＤＡ２で取得した第１データ群ＤＧ１のうちで最も大きい階調値ＧＶを第１最大値ＭＸ１としてフラッシュＲＯＭ３３に記憶する。
【０１１１】
ＣＰＵ３０は、第２最小値ＭＮ２をフラッシュＲＯＭ３３に記憶する（ＤＡ４）。具体的には、ＣＰＵ３０は、処理ＤＡ２で取得した第２データ群ＤＧ２のうちで最も小さい階調値ＧＶを第２最小値ＭＮ２としてフラッシュＲＯＭ３３に記憶する。処理ＤＡ４が終了すると、記憶処理Ｄ８が終了する。
【０１１２】
＜実施形態の効果＞
本実施形態では、処理Ｕ８は、黒平均値ＢＡＶＥが第１閾値ＴＨ１未満であるか否かを判断し、第１閾値ＴＨ１未満でないと判断すると、処理Ｕ１０へ進む。処理Ｕ９は、白黒差分値ＢＷｄｉｆと位置閾値ＰＴＨとの差が第３閾値ＴＨ３以上であるか否かを判断し、第３閾値ＴＨ３以上でないと判断すると、処理Ｕ１０へ進む。処理Ｕ１０は、読取部２０を光量調整位置ＩＡＰに移動させ、第２範囲ＭＲ２における階調値ＧＶの最小値から第１範囲ＭＲ１における階調値ＧＶの最大値を引き算した値が最大となるように調整した光量値を検出光量値ＤＩとして取得し、フラッシュＲＯＭ３３に記憶する。よって、黒領域ＢＥを読み取ったときの平均値である黒平均値ＢＡＶＥが第1閾値ＴＨ１未満でない場合では、黒領域ＢＥが退色等により変化して黒平均値ＢＡＶＥが高くなっている状態である。この状態において、基準部材ＢＭを検出するときの検出光量値ＤＩを調整することで、精度良く基準部材ＢＭを検出することができる。また、白黒差分値ＢＷｄｉｆと位置閾値ＰＴＨとの差が第３閾値ＴＨ３未満である場合では、光源２１の経年変化により白平均値ＷＡＶＥが低下することと、黒領域ＢＥの退色等により黒平均値ＢＡＶＥが高くなることとが同時に起こっている状態である。この状態において、基準部材ＢＭを検出するときの検出光量値ＤＩを調整することで、精度良く基準部材ＢＭを検出することができる。
【０１１３】
処理Ｕ１１は、白平均値ＷＡＶＥが第２閾値ＴＨ２以上であるか否かを判断し、第２閾値ＴＨ２以上でないと判断すると、処理Ｕ１２へ進む。処理Ｕ１０が終了するか、又は処理Ｕ１１でＮｏと判断されると、処理Ｕ１２は、主位置閾値ＭＰＴＨ、および副位置閾値ＳＰＴＨを算出する。よって、白平均値ＷＡＶＥが第２閾値ＴＨ２以上でない場合では、光源２１が経年変化により白平均値ＷＡＶＥが低くなっている状態である。この状態において、主位置閾値ＭＰＴＨ、および副位置閾値ＳＰＴＨを算出することで、精度良く基準部材ＢＭを検出することができる。また、処理Ｕ１０により検出光量値ＤＩを調整した後に、調整した検出光量値ＤＩを用いて第１データ群ＤＧ、第２データ群ＤＧ２、および第３データ群ＤＧ３を取得し、主位置閾値ＭＰＴＨ、および副位置閾値ＳＰＴＨを算出することで、精度良く基準部材ＢＭを検出することができる。
【０１１４】
シャットダウン処理において、処理Ｄ５は、第１平均値ＡＶ１が第１閾値ＴＨ１未満であるか否かを判断し、第１閾値ＴＨ１未満でないと判断すると、処理Ｄ６へ進む。処理Ｄ６は、読取部２０を光量調整位置ＩＡＰに移動させ、第２範囲ＭＲ２における階調値ＧＶの最小値から第１範囲ＭＲ１における階調値ＧＶの最大値を引き算した値が最大となるように調整した光量値を検出光量値ＤＩとして取得し、フラッシュＲＯＭ３３に記憶する。よって、黒領域ＢＥを読み取ったときの平均値である第１平均値ＡＶ１が第１閾値ＴＨ１未満でない場合では、黒領域ＢＥが退色等により変化してしまい第１平均値ＡＶ１が高くなっている状態である。この状態において、基準部材ＢＭを検出するときの検出光量値ＤＩを調整することで、精度良く基準部材ＢＭを検出することができる。また、シャットダウン処理において、検出光量値ＤＩを調整することで、次の起動時に精度良く基準部材ＢＭを検出することができる。
【０１１５】
シャットダウン処理において、処理Ｄ７は、第２平均値ＡＶ２が第２閾値ＴＨ２以上であるか否かを判断し、第２閾値ＴＨ２以上でないと判断すると、処理Ｄ８へ進む。処理Ｄ８は、第１最大値ＭＸ１、および第２最小値ＭＮ２をフラッシュＲＯＭ３３に記憶する。よって、白平均値ＷＡＶＥが第２閾値ＴＨ２以上でない場合では、光源２１が経年変化により第２平均値ＡＶ２が低くなっている状態である。この状態において、第１最大値ＭＸ１、および第２最小値ＭＮ２をフラッシュＲＯＭ３３に記憶することで、次の起動時の位置閾値ＰＴＨを精度良く算出することができ、基準部材ＢＭを精度良く検出することができる。
【０１１６】
［実施形態と発明との対応関係］
画像読取装置ＳＭ、および基準部材ＢＭが、本発明の画像読取装置、および基準部の一例である。読取部２０、ＡＦＥ３５、およぶ画像処理部３６が、本発明の読取部の一例である。駆動回路３７、搬送モータＭＴ、および移動機構ＭＭが、本発明の移動部の一例である。ＲＡＭ３２、およびフラッシュＲＯＭ３３が、本発明の記憶部の一例である。ＣＰＵ３０が、本発明の制御部の一例である。処理Ｕ８、処理Ｕ９、および処理Ｄ５が、本発明の光量調整判断処理の一例である。処理Ｕ１０が、本発明の光量調整処理の一例である。処理Ｕ１２が、本発明の閾値算出処理の一例である。処理Ｕ３、処理Ｕ１３、および処理Ｕ６が、本発明の基準位置検出処理の一例である。処理ＵＤ４、処理ＵＤ５、処理ＤＡ２、および処理ＤＡ３が、本発明の黒色値取得処理の一例である。処理ＵＤ４、処理ＵＤ６、処理ＵＤ７、処理ＤＡ２、および処理ＤＡ４が、本発明の白色値取得処理の一例である。処理Ｕ１１、および処理Ｄ７が、本発明の再取得判断処理の一例である。処理ＵＢ６、処理Ｄ２、および処理Ｄ３が、本発明の黒平均値取得処理の一例である。処理Ｕ８、および処理Ｄ５が、本発明の黒判断処理の一例である。処理ＵＢ６、処理Ｄ２、および処理Ｄ４が、本発明の白平均値取得処理の一例である。処理Ｕ１１、および処理Ｄ７が、本発明の白判断処理の一例である。処理Ｕ２が、本発明の調整前閾値算出処理の一例である。処理ＵＢ７が、本発明の白黒差分値算出処理の一例である。処理Ｕ９が、本発明の白黒差分判断処理の一例である。シャットダウン処理が、本発明の電源遮断処理の一例である。
【０１１７】
［変形例］
本発明は、本実施形態に限定されることなく、その趣旨を逸脱しない範囲において種々の変形が可能である。以下にその変形の一例を述べる。
【０１１８】
（１）本実施形態の画像読取装置ＳＭは、プリンタ部を備えた複合機に適用されても良い。また、本実施形態では、読取部２０が、ＣＩＳで構成される場合について説明をしたが、ＣＣＤを搭載し、副走査方向に移動するＣＣＤユニットで構成されても良いし、光源とミラーとのみが副走査方向に移動するＣＣＤを用いた読取ユニットで構成されても良い。
【０１１９】
（２）本実施形態では、基準部材ＢＭの黒領域ＢＥは、基準部材ＢＭにおいて、副走査方向に最も下流の位置で、且つ主走査方向に最も上流の位置に配置されていたが、異なる位置でも良い。また、黒領域ＢＥの形状も矩形であったが、円形、楕円形、他の多角形でも良い。黒領域ＢＥの個数も１つであったが、２つ以上でも良い。
【０１２０】
（３）本実施形態では、光源２１の光量値の調整を光源２１の点灯期間により調整したが、光源２１の電流値で調整しても良いし、光源２１の点灯期間と光源２１の電流値との両者で調整しても良い。
【０１２１】
（４）本実施形態では、第1閾値ＴＨ１は、黒色を読み取ったときの階調値ＧＶの１ライン中のバラツキの最大値である「３０」としたが、階調値ＧＶの１ライン中のバラツキの平均値などの異なる値でも良い。また、環境温度により黒色を読み取ったときの階調値ＧＶが変化するため、第1閾値ＴＨ１を環境温度が高くなると大きな値とし、環境温度が低くなると小さな値としても良い。
【０１２２】
（５）本実施形態では、第２閾値ＴＨ２は、階調値ＧＶの階調数である「２５５」を「２」で割ったときの整数部である「１２７」としたが、異なる値でも良い。例えば、白色を読み取ったときの値は、光源２１の光量ムラによる影響が強く、その光量ムラは読取部２０毎に個別に異なっている。そのため、第２閾値ＴＨ２を読取部２０の光量ムラに応じて、出荷前に個別に決定しても良い。
【０１２３】
（６）本実施形態では、第３閾値ＴＨ３は、階調値ＧＶの階調数である「２５５」の１０％である「２５」としたが、異なる値でも良い。例えば、装置本体を長期間使用しないことが予め分かっているような場合には、基準部材ＢＭの検出に失敗する虞があるため、第３閾値ＴＨ３を低く設定し、検出光量値ＤＩ、第1最大値ＭＸ１、および第２最小値ＭＮ２をなるべく再取得するようにしたほう良い。
【０１２４】
（７）本実施形態では、処理ＵＢ６は、第1範囲ＭＲ１が黒色であり、且つ第２範囲ＭＲ２が白色であると処理ＵＢ４において判断した位置から副走査方向に上流へ８ライン目の位置まで移動させた位置で取得した１ラインの階調値ＧＶから黒平均値ＢＡＶＥおよび白平均値ＷＡＶＥを算出したが、異なる位置で取得した１ラインの階調値ＧＶを用いて算出しても良い。例えば、ホーム位置ＨＰから副走査方向に下流へ３０ライン目から９０ライン目の間のいずれかの位置であっても良い。
【０１２５】
（８）本実施形態では、黒平均値ＢＡＶＥが第１閾値ＴＨ１未満であるか否かを判断することにより、検出光量調整処理を実行するか否かを判断したが、異なる方法でも良い。例えば、黒平均値ＢＡＶＥが大きく変化したときに、検出光量調整処理を実行しても良い。
【０１２６】
（９）本実施形態では、処理ＵＤ８において、第１最大値ＭＸ１と第２最小値ＭＮ２とを平均して主位置閾値ＭＰＴＨを算出したが、異なる方法でも良い。例えば、第１最大値ＭＸ１と第２最小値ＭＮ２との中間の値でも良い。
【０１２７】
（１０）本実施形態では、処理ＵＤ９において、第１最大値ＭＸ１と第３最小値ＭＮ３とを平均して副位置閾値ＳＰＴＨを算出したが、異なる方法でも良い。例えば、第１最大値ＭＸ１と第３最小値ＭＮ３との中間の値でも良い。
【符号の説明】
【０１２８】
ＳＭ…画像読取装置、ＯＭ…操作機構、ＣＶ…カバー、２０…読取部、２１…光源、２２…受光部、２３…光電変換素子、３０…ＣＰＵ、３３…フラッシュＲＯＭ、３４…デバイス制御部、３５…ＡＦＥ、３６…画像処理部、３７…駆動回路
【図１】
2018157365.tif 000003
【図２】
2018157365.tif 000004
【図３】
2018157365.tif 000005
【図４】
2018157365.tif 000006
【図５】
2018157365.tif 000007
【図６】
2018157365.tif 000008
【図７】
2018157365.tif 000009
【図８】
2018157365.tif 000010
【図９】
2018157365.tif 000011
【図１０】
2018157365.tif 000012
【図１１】
2018157365.tif 000013