android图像处理教程?

时间:2011-05-21 00:35:21

标签: android image image-processing

有没有人知道Android的任何好的图像处理教程?我是android的新手,我正在编写一个对位图产生影响的应用程序。我可以在java中找到很多教程,但android不支持awt。我想使用android sdk操作位图中的像素,例如:翘曲,鱼眼等我可以访问像素并改变它们的颜色,但我对转换不太好,不知道从哪里开始。

4 个答案:

答案 0 :(得分:18)

检查出来(在[基础知识] 29之后向下滚动):

http://xjaphx.wordpress.com/learning/tutorials/

有一些很棒的教程,如:

  • 平均去除效果
  • 平滑效果
  • 浮雕效果
  • 雕刻效果
  • 提升色彩强度
  • 圆角图像
  • 动态水印
  • 图像翻转/镜像
  • 像素颜色替换
  • Tint Color
  • 跳蚤/噪音效果
  • 黑色滤镜(增加黑暗度)
  • 雪效果
  • 着色过滤器
  • 饱和度过滤器
  • Hue Filter
  • 图像反射效果
  • 在曲线上绘制文字

答案 1 :(得分:8)

您还可以签出JavaCV,它为您提供绑定到opencv lib的Java对象。 这样你就不需要进行任何c / c ++编码了,你可以直接在Java中完成所有操作并从opencv访问函数。

Google code Project

回答你的后续问题:

例如,采用圆柱投影:看一下图像 -

image

(对不起,我不允许发布图片)  这取自Szeliskis书(http://szeliski.org/Book/)。 你最终在这里的关系是

x'=s*tan⁻¹(x/f) 

y'=s*(y/sqrt(x²+f²)) 

其中f是摄像机的焦距和圆柱的半径,你可以使用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的行可能如下:

/** 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);

答案 2 :(得分:3)

OpenCV Android是首选,因为在Android平台上易于使用,尽管可能存在限制。以下是一些可能有用的参考资料:

1.在Android平台上学习图像处理的最佳方法是通过实施。尝试运行并了解Android Studio / Eclipse上现有的OpenCV4Android示例。它们可在https://github.com/joaopedronardari/OpenCV-AndroidSamples上找到。

OpenCVAndroid Samples页面上提供了每个示例的说明。混合处理,相机控制,图像处理和色斑检测处理预处理和图像处理。它们包括:

RGBA和灰色预览

Canny(边缘检测)

查找功能

色彩效果

直方图

棕褐色

Sobel过滤器

缩放

Pixelize

色调分离

流域转型

标记(斑点检测)

  1. 由于您将在Java平台上工作,因此将使用OpenCV Java教程。

  2. http://web.stanford.edu/class/ee368/Android/有示例项目。

  3. 4.查看Android Arsenal,用于图像处理库。

    注意:必须将Mat对象转换为Bitmap对象,才能在设备屏幕(ImageView)上显示它。

答案 3 :(得分:0)

也许你会在OpenCV java bindings取得一些成功。除此之外,没有任何我知道的东西会有所帮助。