Кто-нибудь знает какие-либо хорошие учебники по обработке изображений для Android? Я новичок в android, и я кодирую приложение, которое влияет на растровое изображение. Я могу найти множество учебников в java, но андроид не поддерживает awt. Я хотел бы манипулировать пикселями в растровом изображении только с помощью sroid sroid, например. деформирование, рыбий глаз и т.д. Я могу получить доступ к пикселям и изменить их цвет, но я не слишком хорош с преобразованиями и не знаю, с чего начать.
Учебник по обработке изображений Android?
Ответ 1
Проверьте это (прокрутите вниз после [Основы] 29):
http://xjaphx.wordpress.com/learning/tutorials/
Есть несколько отличных учебников, например:
- Среднее значение удаления
- Гладкий эффект
- Эффект Emboss
- Эффект гравировки
- Повысить интенсивность цвета
- Изображение с закругленным углом.
- Водяные знаки на лету
- Поворот/зеркалирование изображений
- Замена цвета пикселей
- Цвет оттенков
- Эффект Flea/Noise
- Черный фильтр (увеличение темноты)
- Эффект снега
- Фильтр затенения
- Фильтр насыщенности
- Фильтр оттенков
- Эффект отражения изображения
- Рисование текста на кривой
Ответ 2
Вы также можете проверить JavaCV, которые предоставляют вам объекты Java со связями с opencv lib. Таким образом, вам не нужно будет делать какое-либо кодирование c/С++, вы можете делать все непосредственно в Java и получать доступ к функциям из opencv.
Отвечайте на следующий вопрос:
Например, возьмите цилиндрическую проекцию: взгляните на изображение -
(извините, мне не разрешено публиковать фотографии) это взято из книги Селискиса (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)
-
Поскольку вы будете работать на платформе Java, учебные пособия OpenCV Java будут полезны.
-
http://web.stanford.edu/class/ee368/Android/ содержит примеры проектов.
4.Проверьте Android Арсенал для библиотек обработки изображений.
Примечание. Объект Mat должен быть преобразован в объект Bitmap, чтобы отобразить его на экране устройства (ImageView).
Ответ 4
Возможно, у вас будет некоторый успех с привязкой Java OpenCV. Помимо этого нет ничего, что я знаю об этом.