реклама на сайте
подробности

 
 
> Графический фильтр на Cortex-M7, Увеличение ровно в 2 раза
__inline__
сообщение Jul 16 2018, 05:35
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 257
Регистрация: 5-09-17
Пользователь №: 99 126



Бьюсь над реализацией графического фильтра HQ2X на STM32H743 (Cortex-M7). Фильтр работает, но притормаживает, когда в кадре много мелких деталей.

Была предпринята оптимизация: Switch/Case из 256 значений был заменён на JumpTable. Не помогло. Исходный код фильтра (Keil ARM MDK):

Прикрепленный файл  HQ2x.rar ( 8.36 килобайт ) Кол-во скачиваний: 21


Требуется растянуть кадр в 2 раза по обеим осям.

Есть другие фильтры Scale2x, SaI2x , LQ2x - с ними проблем нет, на STM32H743 они идут довольно шустро(написанные на C, без Asm-а).

Вот тут чувак заточил под NEON и DSP фильтр HQnX (что не годится для Cortex-M7): https://pyra-handheld.com/boards/threads/ru...sp.69047/page-5

Существуют ли аналогичные графические фильтры (в частности HQ 2x), оптимизированные на ассемблере для ядер ARM Cortex-M7?

Работа фильтра пояснена на рисунке:

Прикрепленное изображение


Сообщение отредактировал __inline__ - Jul 16 2018, 05:37
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ViKo
сообщение Jul 16 2018, 07:26
Сообщение #2


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Рисунок врет. Например, глаза лягушонка он размыл (округлил), а такой же черный квадрат недалеко оставил, как есть. И диагональные линии выглядят слишком красиво.
Растянуть в 2 раза - половина пикселей (по одной оси) уже есть, а половину всунуть кубической интерполяцией. Еще есть пиксели по диагонали, те нужно интерполировать побеим осям.
Go to the top of the page
 
+Quote Post
__inline__
сообщение Jul 16 2018, 07:54
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 257
Регистрация: 5-09-17
Пользователь №: 99 126



Цитата(ViKo @ Jul 16 2018, 08:26) *
Рисунок врет. Например, глаза лягушонка он размыл (округлил), а такой же черный квадрат недалеко оставил, как есть. И диагональные линии выглядят слишком красиво.
Растянуть в 2 раза - половина пикселей (по одной оси) уже есть, а половину всунуть кубической интерполяцией. Еще есть пиксели по диагонали, те нужно интерполировать побеим осям.


Не врёт. Это волшебный фильтр. Не просто билинейная-бикубическая фильтрация , а смарт-фильтр, заточенный под пиксель-арт.

В доказательство прикрепляю программу (под винду) вместе с исходником и мейкфайлом. Фильтр LQ2x (практически результат схож с HQ2x, но быстрее и легче для STM32):

Прикрепленный файл  LQ2x_WIN32.rar ( 218.86 килобайт ) Кол-во скачиваний: 16


Входные данные: файл test.raw, 160x102 пикселя RGB 8:8:8
Выходные данные после отработки программы : LQ2x.raw 204x320 пикселей RGB 8:8:8
В программе фильтр делает ещё поворот на 90 градусов и работает в цветовом пространстве RGB 5:6:5 (для моих целей).

RAW смотреть к примеру IrfanView, выставив длину, ширину и пиксель-формат.

Ну и ниже картинка с результатами фильтров (с википедии):

Прикрепленное изображение


Сообщение отредактировал __inline__ - Jul 16 2018, 07:57
Go to the top of the page
 
+Quote Post
KnightIgor
сообщение Jul 16 2018, 11:54
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Цитата(__inline__ @ Jul 16 2018, 08:54) *
Не врёт. Это волшебный фильтр. Не просто билинейная-бикубическая фильтрация , а смарт-фильтр, заточенный под пиксель-арт.
Фильтр LQ2x (практически результат схож с HQ2x, но быстрее и легче для STM32):

ОТ: Back to 80's? Не в смысле фильтров, а моды на 8-битные игры? Интересно узнать, каков back ground изысканий...
Go to the top of the page
 
+Quote Post
__inline__
сообщение Jul 21 2018, 09:26
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 257
Регистрация: 5-09-17
Пользователь №: 99 126



Цитата(KnightIgor @ Jul 16 2018, 12:54) *
ОТ: Back to 80's? Не в смысле фильтров, а моды на 8-битные игры? Интересно узнать, каков back ground изысканий...


Цель - прощупать новый флагман от STM: Cortex-M7 @ 400MHz H743 в мультимедийном контексте.
Just for fun & Proof concept.

Если подробнее, то веду тему здесь (там же демонстрация работы, исходники и многое другое): http://vrtp.ru/index.php?showtopic=30174&st=0
Эмуляторы игровых приставок/консолей

Все фильтры, которые тут обсуждались успешно применил (HQ2x в стадии отладки и оптимизации) rolleyes.gif

Сообщение отредактировал __inline__ - Jul 21 2018, 09:27
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- __inline__   Графический фильтр на Cortex-M7   Jul 16 2018, 05:35
- - Genadi Zawidowski   А попорбовать вместо ассемблерных вставок (которые...   Jul 16 2018, 06:12
|- - __inline__   Цитата(Genadi Zawidowski @ Jul 16 2018, 07...   Jul 16 2018, 07:49
|- - aaarrr   Цитата(ViKo @ Jul 16 2018, 10:26) Рисунок...   Jul 16 2018, 07:49
||- - ViKo   Цитата(aaarrr @ Jul 16 2018, 10:49) Прост...   Jul 16 2018, 07:54
|- - Arlleex   Цитата(__inline__ @ Jul 21 2018, 12:26) В...   Jul 21 2018, 10:13
|- - __inline__   Цитата(Arlleex @ Jul 21 2018, 11:13) А за...   Jul 21 2018, 10:41
- - Genadi Zawidowski   CMSIS обычно подключен через соответствующий проце...   Jul 16 2018, 07:53
- - jcxz   Цитата(__inline__ @ Jul 16 2018, 08:35) Б...   Jul 16 2018, 08:00
|- - __inline__   Цитата(jcxz @ Jul 16 2018, 09:00) Уже пис...   Jul 16 2018, 08:07
|- - jcxz   Цитата(__inline__ @ Jul 16 2018, 11:07) П...   Jul 16 2018, 08:17
- - AVI-crak   Цитата(__inline__ @ Jul 16 2018, 11:35) В...   Jul 16 2018, 08:35
- - Genadi Zawidowski   Там тоже ассемблер с "неоном". Неон умее...   Jul 16 2018, 08:39
|- - jcxz   Я так понимаю - Вы сами пытались оптимизировать фу...   Jul 16 2018, 08:50
|- - __inline__   Цитата(jcxz @ Jul 16 2018, 09:50) Я так п...   Jul 16 2018, 14:54
- - Obam   Т.к. кортекс-М умеет только команды Tumb-2, то заг...   Jul 16 2018, 15:52
|- - __inline__   Цитата(Obam @ Jul 16 2018, 16:52) Т.к. ко...   Jul 16 2018, 16:21
|- - jcxz   Цитата(__inline__ @ Jul 16 2018, 19:21) Ч...   Jul 16 2018, 18:30
|- - jcxz   Кстати - по этой найденной Вами ассемблерной Diff(...   Jul 17 2018, 06:17
|- - __inline__   Цитата(jcxz @ Jul 17 2018, 07:17) Кстати ...   Jul 17 2018, 11:11
|- - jcxz   Цитата(__inline__ @ Jul 17 2018, 14:11) Е...   Jul 17 2018, 15:59
|- - __inline__   Цитата(jcxz @ Jul 17 2018, 16:59) Код in...   Jul 18 2018, 03:03
|- - jcxz   Цитата(__inline__ @ Jul 18 2018, 06:03) П...   Jul 18 2018, 08:57
|- - __inline__   Цитата(jcxz @ Jul 18 2018, 09:57) Я вообщ...   Jul 21 2018, 02:38
- - __inline__   Проделал несколько экспериментов. 1) Переписал Di...   Jul 17 2018, 09:01
- - AVI-crak   Цитата(__inline__ @ Jul 17 2018, 15:01) 3...   Jul 17 2018, 15:26


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 13:52
Рейтинг@Mail.ru


Страница сгенерированна за 0.01755 секунд с 7
ELECTRONIX ©2004-2016