誰もがAndroid用の良い画像処理チュートリアルを知っていますか?私はAndroidが初めてで、ビットマップにエフェクトをかけるアプリをコーディングしています。 Javaにはたくさんのチュートリアルがありますが、Androidはawtをサポートしていません。Android sdkを使用してビットマップのピクセルを操作したいですたとえば、ワープ、魚眼レンズなど。ピクセルにアクセスして色を変更することはできますが、変換はあまり得意ではなく、どこから始めればよいかわかりません。
これを確認してください([The Basics] 29の後にスクロールしてください):
http://xjaphx.wordpress.com/learning/tutorials/
次のような優れたチュートリアルがあります。
また、opencv libへのバインディングを持つJavaオブジェクトを提供するJavaCVをチェックアウトすることもできます。この方法では、c/c ++コーディングを行う必要はありません。すべてをJavaで直接実行し、opencvから関数にアクセスできます。
フォローアップの質問への回答:
たとえば、円筒投影をします。画像を見てください-
(申し訳ありませんが、写真を投稿することはできません)これはSzeliskisの本( http://szeliski.org/Book/ )から取られています。最後にここにある関係は
x'=s*tan⁻¹(x/f)
そして
y'=s*(y/sqrt(x²+f²))
fはカメラの焦点距離、sは円柱の半径です。f= sを使用できます。これをループに入れるために、ここにいくつかの擬似コードがあります:
%% xMitte , yMitte are the coordinates for the point in the middle
for yNeu =1: height
for xNeu =1: width
dx = xNeu - xMitte ; %% X relativ to Origin
dy = yNeu - yMitte ; %% Y relativ to Origin
theta = atan(dx / f);
h = dy / sqrt(dx ^2+f^2);
x = (f * theta) + xMitte ;
y = (f * h) + yMitte ;
BildNeu (xNeu ,yNeu) = BildAlt (x, y);
end
end
BildNeuは新しい画像であり、この配列のサイズはBildAlt(元の画像)と同じです。
内側のループの終わりにBildNeuとBildAltを含むLineは次のようになります。
/** returns the color value of that pixel **/
CvScalar pixel = cvGet2D(originalImage, i, j);
/** writes the new color value of that pixel **/
cvSet2D(destinationImage, y, x, pixel);
OpenCV Androidは、Androidプラットフォームでの使いやすさから好まれますが、制限があるかもしれません。
1。Androidプラットフォームでの画像処理を学ぶ最良の方法は、実装です。Android Studio/Eclipseで既存のOpenCV4Androidサンプルを実行して理解してみてください。 https://github.com/joaopedronardari/OpenCV-AndroidSamples で利用できます。
各サンプルの説明は、OpenCVAndroidサンプルページで入手できます。混合処理、カメラ制御、画像操作、カラーブロブ検出は、前処理と画像操作を処理します。それらは以下を含む:
RGBAおよびGRAYプレビュー
キャニー(エッジ検出)
機能を見つける
色の効果
ヒストグラム
セピア
ソーベルフィルター
ズーム
ピクセル化
ポスタライズ
流域変換
マーカー(ブロブ検出)
Javaプラットフォームで作業するため、OpenCV Javaチュートリアルが役立ちます。
http://web.stanford.edu/class/ee368/Android/ にはサンプルプロジェクトがあります。
4.画像処理ライブラリについては、Android Arsenalをご覧ください。
注:デバイス画面(ImageView)に表示するには、MatオブジェクトをBitmapオブジェクトに変換する必要があります。
おそらく、あなたは OpenCV Java bindings である程度成功するでしょう。