Подтвердить что ты не робот

Учебник по обработке изображений Android?

Кто-нибудь знает какие-либо хорошие учебники по обработке изображений для Android? Я новичок в android, и я кодирую приложение, которое влияет на растровое изображение. Я могу найти множество учебников в java, но андроид не поддерживает awt. Я хотел бы манипулировать пикселями в растровом изображении только с помощью sroid sroid, например. деформирование, рыбий глаз и т.д. Я могу получить доступ к пикселям и изменить их цвет, но я не слишком хорош с преобразованиями и не знаю, с чего начать.

4b9b3361

Ответ 1

Проверьте это (прокрутите вниз после [Основы] 29):

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

Есть несколько отличных учебников, например:

  • Среднее значение удаления
  • Гладкий эффект
  • Эффект Emboss
  • Эффект гравировки
  • Повысить интенсивность цвета
  • Изображение с закругленным углом.
  • Водяные знаки на лету
  • Поворот/зеркалирование изображений
  • Замена цвета пикселей
  • Цвет оттенков
  • Эффект Flea/Noise
  • Черный фильтр (увеличение темноты)
  • Эффект снега
  • Фильтр затенения
  • Фильтр насыщенности
  • Фильтр оттенков
  • Эффект отражения изображения
  • Рисование текста на кривой

Ответ 2

Вы также можете проверить JavaCV, которые предоставляют вам объекты Java со связями с opencv lib. Таким образом, вам не нужно будет делать какое-либо кодирование c/С++, вы можете делать все непосредственно в Java и получать доступ к функциям из opencv.

Проект кода Google

Отвечайте на следующий вопрос:

Например, возьмите цилиндрическую проекцию: взгляните на изображение -

image

(извините, мне не разрешено публиковать фотографии)  это взято из книги Селискиса (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 в конце внутреннего цикла может быть такой:

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

Ответ 3

OpenCV Android предпочтительнее из-за простоты использования на платформе Android, хотя, возможно, и ограничений. Вот несколько ссылок, которые могут помочь:

1. Лучший способ изучить обработку изображений на платформе Android - через реализацию. Попробуйте запустить и понять существующие образцы OpenCV4Android на Android Studio/Eclipse. Они доступны на https://github.com/joaopedronardari/OpenCV-AndroidSamples.

Описание каждого образца доступно на странице OpenCVAndroid Samples. Смешанная обработка, управление камерой, манипуляции с изображениями и определение цвета-blob с предварительной обработкой и обработкой изображений. Они включают:

Предварительный просмотр RGBA и GREY

Canny (обнаружение края)

Поиск функций

Цветные эффекты

Гистограмма

Сепия

Фильтр Sobel

Увеличить

Пикселизация

Постеризовать

Преобразование водораздела

Маркеры (обнаружение blob)

  1. Поскольку вы будете работать на платформе Java, учебные пособия OpenCV Java будут полезны.

  2. http://web.stanford.edu/class/ee368/Android/ содержит примеры проектов.

4.Проверьте Android Арсенал для библиотек обработки изображений.

Примечание. Объект Mat должен быть преобразован в объект Bitmap, чтобы отобразить его на экране устройства (ImageView).

Ответ 4

Возможно, у вас будет некоторый успех с привязкой Java OpenCV. Помимо этого нет ничего, что я знаю об этом.