9

私が Android 用に開発しているアプリケーションの一部として、ユーザーが撮影した画像のエッジ検出バージョン (以下の例のようなもの) をユーザーに表示したいと思います。

代替テキスト

これを実現するために、私は Sobel 演算子とそれを Java で実装する方法を調べてきました。ただし、私が見つけた例の多くは、Android の一部ではないAWT (この例のように) にあるオブジェクトとメソッドを利用しています。

私の質問は、Android は上記の例で使用された AWT の機能に代わるものを提供していますか? Android に組み込まれているライブラリだけを使用してその例を書き直すとしたら、どうすればよいでしょうか。

4

4 に答える 4

3

AndroidにはBufferedImageがないため、基本的な操作はすべて自分で行うことができます。

Bitmap b = ...
width = b.getWidth();
height = b.getHeight();
stride = b.getRowBytes();
for(int x=0;x<b.getWidth();x++)
  for(int y=0;y<b.getHeight();y++)
    {
       int pixel = b.getPixel(x, y);
       // you have the source pixel, now transform it and write to destination 
    }

ご覧のとおり、これはそのAWTの例を移植するために必要なほとんどすべてをカバーしています。(「convolvePixel」関数を変更するだけです)

于 2010-05-30T14:32:19.263 に答える
1

もう 1 つのオプションは、Android 向けの優れた実装を持つ OpenCV を使用することです。

このImgproc.Sobel()メソッドは、リソースまたはビットマップから簡単にロードできる「Mat」タイプの形式で画像を取得します。入力 Mat は、opencv でも作成できるグレースケール イメージである必要があります。 Mat src = Highgui.imread(getClass().getResource( "/SomeGrayScaleImage.jpg").getPath());

次に、その上でソーベルエッジ検出器を実行し、結果を新しいマットに保存します。同じ画像深度を維持したい場合は、これで十分です... Mat dst; int ddepth = -1; // destination depth. -1 maintains existing depth from source int dx = 1; int dy = 1; Imgproc.Sobel(src, dst, ddepth, dx, dy);

いくつかの参考資料はこちら: http://docs.opencv.org/java/org/opencv/imgproc/Imgproc.html#Sobel(org.opencv.core.Mat,%20org.opencv.core.Mat,%20int, %20int,%20int)

Android Studio での gradle ビルドの場合、さまざまな場所から Java 用にビルドされた opencv ライブラリを取り込むことができますが、最近のビルドもホストしています。build.gradle ファイルで、次のように依存関係を追加できます... そうしないと、少し注意が必要です。 dependencies { compile 'com.iparse.android:opencv:2.4.8' } Eclipse を使用している場合は、Opencv Web サイトで Android での Opencv の使用に関する詳細を確認できます: http://opencv.org/platforms/android.html

于 2015-08-24T04:46:31.407 に答える
0

Check a java implementation here:

http://code.google.com/p/kanzi/source/browse/java/src/kanzi/filter/SobelFilter.java

There is no dependency on Swing/AWT or any other library. It operates directly on the image pixels and it is fast.

The results can be seen here (scroll down):

http://code.google.com/p/kanzi/wiki/Overview

于 2013-05-26T05:07:04.440 に答える