私のiOSプロジェクトには、2値化(白黒に変換)したいRGBのCGImageがあります。これを行うためにOpenCVを使用したいのですが、OpenCVは初めてです。OpenCVで本を見つけましたが、iPhone用ではありませんでした。
iOSでOpenCVを使用してそのような画像を2値化するにはどうすればよいですか?
私のiOSプロジェクトには、2値化(白黒に変換)したいRGBのCGImageがあります。これを行うためにOpenCVを使用したいのですが、OpenCVは初めてです。OpenCVで本を見つけましたが、iPhone用ではありませんでした。
iOSでOpenCVを使用してそのような画像を2値化するにはどうすればよいですか?
iOS プロジェクトで OpenCV を設定したくない場合、私のオープン ソースGPUImageフレームワークには、画像を 2 値化するための 2 つのしきい値フィルターが含まれています。単純なしきい値と、ピクセル付近のローカル輝度に基づく適応的なしきい値です。
次のようなコードを使用して、単純なしきい値を画像に適用し、結果のバイナリ化された UIImage を抽出できます。
UIImage *inputImage = [UIImage imageNamed:@"inputimage.png"];
GPUImageLuminanceThresholdFilter *thresholdFilter = [[GPUImageLuminanceThresholdFilter alloc] init];
thresholdFilter.threshold = 0.5;
UIImage *thresholdFilter = [thresholdFilter imageByFilteringImage:inputImage];
(アプリケーションで ARC を使用していない場合は、上記のフィルターを解放してください)
代わりにこの画像を画面に表示したい場合は、しきい値処理された出力を GPUImageView に送信できます。これらのフィルターは完全に GPU 上で実行されるため、必要に応じてこれらのフィルターを使用してライブ ビデオを処理することもできます。
次のようにcv::threshold()
adnpassthresholdTypeを見てcv::THRESH_BINARY
ください。
double cv::threshold(const cv::Mat& src,
cv::Mat& dst,
double thresh,
double maxVal,
int thresholdType)
この例では、OpenCVのCインターフェイスを使用して、画像を白黒に変換します。
あなたがしたいことは、変化率の低いものを取り除き、変化率の高いものを残すことです。これがハイパスフィルターです。私はオーディオ信号処理の経験しかないので、どのオプションが利用できるかはよくわかりませんが、それが私が見ている方向です。