Как стать автором
Поиск
Написать публикацию
Обновить
143.67

Обработка изображений *

Работаем с фото и видео

Сначала показывать
Порог рейтинга

Как мы синхронизировали съемку для возрожденного проекта DPED

Команда регионального научно-образовательного центра «Искусственный интеллект и анализ больших данных» при НГТУ им. Р. Е. Алексеева продолжает рассказывать о работе по возрождению и улучшению DPED (Deep Photo Enhancement Dataset). 

Мы решили задачи автоматизации, но столкнулись с еще одной проблемой: фото на планшете и камере снимались с некоторой задержкой относительно друг друга. Использование простых пауз (time.sleep) оказалось ненадежно и неэффективно. Тогда мы реализовали многопоточное решение:

  • Первый поток управляет съемкой с камеры с помощью библиотеки pyautogui.

  • Второй поток управляет съемкой с планшета через ADB.

  • Оба потока обмениваются информацией через очередь (queue.Queue() из стандартной библиотеки Python) — это потокобезопасная структура данных, которая позволяет одному потоку передать сигнал другому. В нашем случае очередь используется для передачи сигнала о начале съемки с камеры. Получив этот сигнал, планшет почти без задержки запускает захват изображения.

В процессе тестирования среднее время задержки составило 50 мс, но разброс данных достигал 93 мс. То есть, существуют случаи, когда мы получаем изображения с непозволительной задержкой в 100 мс и более. Мы отметили этот момент, но продолжили собирать датасет, а изображения с большой задержкой — удалять.

Скрипт автоматизации съемки кадров:

import subprocess
from threading import Thread
import pyautogui
import time
from queue import Queue

# координаты для кликов мыши

CAMERA_SHUTTER_BUTTON = (329, 748)    # кнопка затвора в приложении

FOCUS_POINT = (1189, 204)            # точка фокуса или область кадра


def tablet(q):
    time.sleep(0.1)
    if q.get() == 1:
        p = subprocess.Popen(r'.\adb.exe shell', stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        p.stdin.write(b'input keyevent 27')
        p.stdin.close()

def camera(q):
    pyautogui.click(*CAMERA_SHUTTER_BUTTON)
    pyautogui.moveTo(*FOCUS_POINT)
    q.put(1)
    pyautogui.mouseDown()
    time.sleep(0.02)
    pyautogui.mouseUp()

q = Queue()
thread1 = Thread(target=camera, args=(q,))
thread2 = Thread(target=tablet, args=(q,))
thread1.start()
thread2.start()

В оригинальной работе DPED точные значения задержки не указывались: авторы фиксировали устройства на механическом стенде и выполняли съемку вручную, без программной синхронизации или последующего анализа временного лага между кадрами. Насколько нам удалось выяснить, синхронизация производилась «на глаз», что не позволяет оценить точность в миллисекундах. Таким образом, можно утверждать, что наша реализация обеспечивает более детерминированный и измеримый результат по синхронизации.

Читайте в статье, как команда регионального научно-образовательного центра «Искусственный интеллект и анализ больших данных» при НГТУ доводит снимки с планшета YADRO KVADRA_T до качества полупрофессиональной камеры Sony Alpha ILCE 6600.

Теги:
+3
Комментарии0

Apple выпустила рекламу своей ИИ‑опции Clean Up по стиранию с фото разных объектов. В ролике показано, как можно удалить кота с фото. Изменения можно отменить, что и пришлось сделать герою видео, который решил «стереть» кота со снимка с супругой.

Теги:
+3
Комментарии3

Как улучшить режим ночной съемки с помощью нейросети на примере MEFNet

Смешивание экспозиций обычно применяют для улучшения изображений при дневной съемке, особенно в условиях яркого солнца. Но мы решили проверить: можно ли адаптировать этот способ для съемки в темноте? Он поможет осветлить изображение и заметно снизить уровень шумов.

MEFNet — это подход к слиянию изображений с разной экспозицией. Он создан для работы со статическими последовательностями кадров произвольного разрешения и в произвольном количестве. Название MEFNet происходит от термина Multi-Exposure Fusion, то есть «многоэкспозиционное смешивание». Отсюда и сокращение MEF.

Главная цель MEFNet — извлекать полезные детали как из темных, так и из пересвеченных областей, чтобы сформировать итоговое изображение с хорошим балансом яркости и контраста. При этом метод должен избегать артефактов, характерных для классических алгоритмов.

Схема работы алгоритма MEFNet. Источник: Ma, K., Duanmu, Z., Zhu, H., Fang, Y., & Wang, Z. (2019). Deep guided learning for fast multi-exposure image fusion. IEEE Transactions on Image Processing, 29, 2808-2819
Схема работы алгоритма MEFNet. Источник: Ma, K., Duanmu, Z., Zhu, H., Fang, Y., & Wang, Z. (2019). Deep guided learning for fast multi-exposure image fusion. IEEE Transactions on Image Processing, 29, 2808-2819

Схема работы алгоритма MEFNet. Источник: Ma, K., Duanmu, Z., Zhu, H., Fang, Y., & Wang, Z. (2019). Deep guided learning for fast multi-exposure image fusion. IEEE Transactions on Image Processing, 29, 2808-2819

Алгоритм MEFNet работает следующим образом. На вход подается серия изображений с разной экспозицией — они сначала переводятся в YUV-формат. Далее основная обработка выполняется только по Y-каналу, который отвечает за яркость. Дело в том, что именно яркостный компонент в наибольшей степени определяет структуру и детализацию сцены.

Затем нужно уменьшить разрешение всех изображений — так сокращаются вычислительные затраты. Полученные кадры поступают в нейросеть, которая генерирует весовые карты для каждого изображения, также в пониженном разрешении. Она обрабатывает серии произвольного пространственного размера и числа экспозиций, а также генерирует карты соответствующего размера и количества. Сеть состоит из семи сверточных слоев с расширенными свертками, которые увеличивают поле восприятия (receptive field) без потери разрешения: 

  • Слои 1–6 используют ядра размером 3×3 с разными коэффициентами расширения (dilation rates): 1, 2, 4, 8, 16, 1. Это позволяет захватывать контекст на разных масштабах.

  • Слой 7 — финальный слой с ядром 1×1, который преобразует фичи в весовые карты.

  • Нормализация — после каждого сверточного слоя (кроме последнего) применяется адаптивная нормализация (AN), сочетающая нормализацию по экземпляру (instance normalization) с обучаемыми параметрами.

  • Активация — используется Leaky ReLU (LReLU) для сохранения структурной информации.

Подробнее о MEFNet и других алгоритмах улучшения режима ночной съемки в мобильных устройствах на примере планшета KVADRA_T читайте в статье Полины Лукичевой из команды AI ML Kit в YADRO.

Теги:
0
Комментарии0

В системах видеонаблюдения и видеоаналитики часто приходится иметь дело с кадрами низкого качества. Объект съемки далеко, плохое освещение, ограниченные возможности камеры – и вместо четкой картинки мы получаем лишь набор пикселей. Знакомая ситуация?

"Что тут происходит? 😑"
"Что тут происходит? 😑"



Почему это большая проблема?

Распознать что-либо по такому "размытому квадратику" – серьезный вызов для алгоритмов. Стандартные модели, обученные на четких изображениях, часто теряют эффективность, когда объект занимает по высоте всего 32 пикселя (а то и 10!). Это напрямую влияет на точность работы систем в реальных условиях – будь то поиск автомобиля, предмета или распознавание лиц.

В чем сложность?

Главная трудность – "пропасть" между миром четких картинок (на которых обычно учатся модели) и миром размытых кадров. Алгоритмы плохо переносят знания из одного "мира" в другой.

Как с этим бороться?

В нашей новой (и первой) статье мы подробно разобрали ключевые подходы к решению такой проблемы в контексте распознавания лиц:

1. "Дорисовка" деталей: специальные нейросети пытаются увеличить и улучшить размытое изображение перед анализом. Работает, но есть риск "придумать" несуществующие детали.

2. Адаптация модели: как "подружить" алгоритм с плохим качеством?

  • Трюки с данными: искусственно ухудшаем хорошие изображения при обучении (сжатие, шум), чтобы модель привыкла к помехам.

  • Дообучение: учим модель на реальных размытых данных. Важно делать это аккуратно, чтобы она не забыла, как работать с четкими изображениями. Помогают методы вроде LoRA (дообучение только маленькой части сети).

  • "Учитель" для "ученика": мощная модель, видящая четкие картинки, учит компактную модель работать с размытыми, передавая свои "знания".

3. PETALface: новый подход, который динамически комбинирует разные "настройки" (LoRA-адаптеры) в модели в зависимости от качества конкретного входящего кадра. Перспективно, но требует дальнейшего изучения.

Хотите разобраться глубже?

В статье мы подробно разбираем плюсы и минусы каждого подхода, рассматриваем специализированные датасеты (TinyFace, BRIAR) и анализируем нюансы свежего метода PETALface.

Сталкивались ли вы с проблемой низкого разрешения в своих проектах? Какие методы оказались эффективными? Делитесь опытом в комментариях!

Теги:
+4
Комментарии0

Осваиваем азы компьютерного зрения с библиотекой Pillow на одноплатном компьютере Lichee Pi 4A

Наш первый шаг — загрузить изображение, определить его цветовую модель и получить информацию о размере и границах.

from PIL import Image
from PIL import ImageFilter
img = Image.open(“flower.jpg”)
print(img.size, img.format, img.mode)

Эта базовая информация пригодится для дальнейшей работы с изображением.

Меняем цвет пикселя

К отдельным пикселям можно обращаться с помощью метода load() из библиотеки Pillow. Так мы сможем изменять цветовые значения точечно, а это основа для различных операций по обработке изображений.

Открываем white.jpg с помощью Pillow:

from PIL import Image
img = Image.open("white.jpg")
obj = img.load()

Выбираем пиксель с координатами (25, 45) и меняем его цвет:

obj[25, 45] = (0, 0, 0)  # Новый цвет: черный (RGB: 0, 0, 0)

Сохраняем отредактированное изображение:

img.save("image3.jpg")

Визуально проверяем, что цвет пикселя изменился. 

Метод load() позволяет напрямую работать с массивом пикселей изображения: читать, модифицировать и анализировать отдельные элементы, не копируя данные в отдельные структуры. Это особенно важно для задач, которые требуют высокую производительность при обработке больших изображений.

Почему был выбран Lichee Pi 4A, как создать виртуальное окружение Python, установить подходящую среду разработки и научиться базовым приемам работы с изображениями — читайте в подробном туториале.

Теги:
Всего голосов 6: ↑6 и ↓0+7
Комментарии1

Представлен сервис для удаления фона с необычным дизайном — ваша фотка буквально отправляется в стирку. Работает просто: закидываете картинку в машину, пару секунд наблюдаете за гипнотизирующим барабаном и забираете PNG-шку. Дизайнеры познают дзен — здесь.

Теги:
Всего голосов 2: ↑2 и ↓0+4
Комментарии1

Представлен проект сканирования в разрешении 108B (108 Gigapixel) одной из наиболее известных картин нидерландского художника Яна Вермеера — «Девушка с жемчужной серёжкой» (нидерл. Het meisje met de parel). На скане картины можо рассмотреть каждый небольшой мазок и саму мелкую трещинку.

Теги:
Всего голосов 6: ↑5 и ↓1+4
Комментарии0

Как автоматизировать распознавание текста с изображений?

В открытых источниках часто встречаются изображения с ценным текстом — скриншоты рабочих столов и приложений, фотографии таблиц, чеков, рукописных заметок и т.д. Сбор обычного текста автоматизировать легко, но с текстом на картинках начинаются сложности.

Раньше в моём арсенале был только pytesseract (Python-библиотека для распознавания текста). Она работала, но с серьёзными ограничениями:
➖Плохо справлялась с разными шрифтами
➖Теряла точность на низкокачественных изображениях
➖Путала языки, если текст был мультиязычным

Сейчас появились LLM-модели, которые справляются с этой задачей гораздо лучше, но если у вас нет мощного железа, запустить их локально не получится.

В профильных каналах регулярно пишут: «Вышла модель Х, которая показывает отличные результаты. OSINT-еры больше не нужны!», но никто не дает гайдов, как с этими моделями работать. Сегодня я это исправлю.

Обзор моделей для OCR
Прошерстив не один десяток источников, я выделил две наиболее популярные на текущий момент модели:
1️⃣ GPT-4 mini — высокая точность, но платная.
2️⃣ Google Gemini 2.0 Flash — высокая точность + бесплатный лимит.

Выбор без раздумий пал на Gemini. На момент публикации бесплатные лимиты от Google следующие:
✔️ 15 запросов в минуту
✔️ 1 млн токенов в минуту (ввод + вывод)
✔️ 1 500 запросов в сутки

Как взаимодействовать с Gemini?
1️⃣ Получаем API-ключ в Google AI Studio
2️⃣ Через API отправляем изображение в base64 + промпт
3️⃣ Получаем распознанный текст в ответе

Но есть важный нюанс: сервис не работает с российскими IP

Что делать, если Gemini недоступна?
Если у вас по какой-то причине нет возможности получить доступ к серверам Google AI Studio, то можно воспользоваться сервисами, которые предоставляют доступ к различным open-source моделям. Например, DeepInfra.
Плюсы:
✔️ Нет блокировок по геолокации
✔️ Гибкая тарификация
Минусы:
✖️ Нет бесплатного тарифа

Примеры скриптов выложил на github (https://github.com/vmtest439/britalb_ocr)

Если вам понравился пост и вы хотите читать больше подобного контента, то можете подписаться на мой авторский Telegram-канал BritLab!

Теги:
Всего голосов 4: ↑2 и ↓20
Комментарии3

Есть такая программа - Microsoft Excel. Полезная штука, но её активно применяют не совсем для обработки данных, ей пользуются для визуализации процессов, алгоритмов. Базовых инструментов хватает чтобы делать много интересных вещей, но до сего дня, когда мне нужен был скриншот части таблицы, я просто делал его с помощью Win+Shift+S. Но, зная давно о том что в Whatsapp можно вставлять таблицу в виде картинки, я как-то не подумал что так можно делать быстро и точно скриншоты участков, особенно если хочется сделать потом анимацию GIF.

То есть выделяем участок в Excel, копируем в буфер обмена, переключаемся в десктопную версию Whatsapp и вставляем. Кусок таблицы вставится как PNG картинка, которую прям на том же экране можно скачать в один клик. Но и это еще не всё, я открыл Paint.Net и вставил из буфера кусок таблицы и он вставился как картинка. Чудеса.

Да-да, я знаю, что вы могли о таком знать уже лет 10 XD ну что поделать, может кто-то такой же как я жираф.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии2

Верните мой 2007-й: превращаем старые фотки в снимки с зеркалок с помощью ИИ

Однажды группе ИИ-энтузиастов пришла идея: а что если обучить искусственный интеллект улучшать смартфонные снимки до профессиональных с помощью парных фотографий? Задумка понравилась. Для сбора датасета выбрали актуальные в то время Sony Xperia Z, iPhone 3GS, BlackBerry Passport и цифровую зеркалку Canon EOS 70D в качестве эталона. Модель обучили улучшать фотографии, сделанные на смартфонах, в соответствии с такими же изображениями, полученными с камеры. Проект реализовали, исходный код опубликовали на GitHub, а подробное описание — на arXiv.org. Но что же в нем интересного сейчас, почти десять лет спустя?

DPED не просто применяет косметические фильтры. Датасет способен значительно улучшать фотографии на уровне структуры изображения, детализации, динамического диапазона и цветопередачи, приближая результат именно к профессиональной зеркальной фотокамере, а не просто «улучшая» фото.

Открытый исходный код и доступность датасета DPED позволяют легко адаптировать, изменять и дорабатывать модель. Это дает большие возможности исследовательскому сообществу и разработчикам мобильных приложений. Именно гибкость и понятность архитектуры делают DPED хорошим кандидатом для дальнейших экспериментов и улучшений.

В своей статье команда регионального научно-образовательного центра «Искусственный интеллект и анализ больших данных» при НГТУ им. Р. Е. Алексеева запустила DPED на свежих версиях софта, преодолев все проблемы совместимости, и попробовала через него улучшить фото с современного планшета.

Теги:
Всего голосов 6: ↑6 и ↓0+7
Комментарии0

Итак, пятница уже не первый час шагает по глобусу, поэтому держите свеженький выстрел в мозги ;)

Недавнее обсуждение «тыкательного принтера», естественно, не может не будить в пытливых умах вопрос, как бы повысить его скорость печати? Не избежал этой участи и я. Физически всё просто — надо поменьше отрывать тяжёлую ручку от бумаги и рисовать как можно более длинными штрихами. Но как разбить произвольное изображение на штрихи?

Разумеется, решение для искусственно самоограниченной задачи, когда ручка движется строго по горизонтали и бумага после каждого прохода подаётся на один диаметр шарика ручки — элементарное. Берём RLE и Флойда-Стейнберга, за 15 минут пишем этот код:

#define	SQUARE(x) ((x)*(x))
#define	MAXERROR 256	//for RLE

static unsigned char Grayscale8Bit[HEIGHT][WIDTH], Dithered8Bit[HEIGHT][WIDTH];
static signed short AdditionalError[2][WIDTH];

тут мы читаем из файла Grayscale8Bit, этот код я приводить не буду

	memset (AdditionalError, 0, 2*WIDTH*sizeof(short));	//Even/odd lines buffer
	for (int y=0; y<HEIGHT; y++)
	{
		int RLEError=0;
		int PenColor = 255*(Grayscale8Bit[y][0]>127);	//Pen color can be either 0 or 255
		for (int x=0; x<WIDTH; x++)
		{
			int PixelValue = (int)Grayscale8Bit[y][x] + AdditionalError[y&1][x];	//Exact pixel value plus Floyd-Steinberg error from the prev. line
			RLEError += SQUARE (PixelValue - PenColor);	//To avoid missing contrast details such as thin vertical lines, RLE error counted as square.
			if (RLEError > SQUARE (MAXERROR))
			{
				PenColor = 255-PenColor;		//Inverse pen position (up/down)
				RLEError = SQUARE (PixelValue - PenColor);	//Begin counting new RLE error immediately
			}
			Dithered8Bit[y][x]=PenColor;		//Put proper color into the output array
			AdditionalError[!(y&1)][x] = (PixelValue - PenColor)/2;		//Put remaining error into next line buffer, not exactly Floyd-Steinberg but sort of.
			if (x) AdditionalError[!(y&1)][x-1] = (PixelValue - PenColor)/4;
			if (x<WIDTH-1) AdditionalError[!(y&1)][x+1] = (PixelValue - PenColor)/4;
		}
	}

тут мы пишем в файл Dithered8Bit, этот код тоже у каждого свой получится

Код без каких-либо капризов, отладки и подбора параметров сразу выдаёт результат:

Сверху, как нетрудно догадаться, оригинал.
Сверху, как нетрудно догадаться, оригинал.

Ну то есть задача в её куцем виде — совсем детская. Там не то что думать не пришлось, даже ошибиться негде было. Но и результат тоже, мягко говоря, так себе.

Ну а теперь вот вам по случаю пятницы головоломка: как полностью реализовать потенциал не одной, а двух степеней свободы нашего привода, да ещё с учётом того, что скорость протяжки бумаги и скорость вошканья каретки в общем случае друг другу не равны, а проходить ручкой по одному месту больше одного-двух раз — нежелательно, бумага не чугунная. Мучайтесь и ломайте головы над возможными алгоритмами такого вот обхода растра ;)

Спойлер, но вы его сразу не читайте, чтобы не сбиться со своих мыслей: я бы, наверное, обошёл сначала изолинии крупных элементов, разбивая пространство между ними на более или менее густые штриховки, а потом уже прикинул бы ошибку и добавил-убавил штрихи сообразно мелким деталям. Перо, идущее вдоль изолиний — в общем случае довольно хорошая идея, когда надо не убить разборчивость изображения, а то даже ещё и усилить её. Но, правда, это касается только фотореалистичных изображений, а в задаче-то у нас произвольные.

Теги:
Всего голосов 3: ↑3 и ↓0+5
Комментарии3

Маркетолог. Реклама. PR. Кто правит миром?

Деньги? Нет. Технологии? Тоже нет.

Миром правят восприятие и информация

Маркетолог – это не просто человек, который продаёт. Это архитектор реальности. Он управляет тем, как люди видят, чувствуют и принимают решения

🔸 Реклама – это про внимание

🔸 PR – это про влияние

🔸 Маркетинг – это про стратегию

Тот, кто умеет управлять вниманием, контролирует спрос

Тот, кто управляет влиянием, формирует мнение

Тот, кто создаёт стратегию, двигает мир

Ты можешь быть гением, но если о тебе никто не знает – ты никто

Ты можешь делать лучший продукт, но если он не запоминается – он умирает

Поэтому знать маркетинг – это не опция, а обязательное оружие

❓ Кто управляет тобой? Ты или тот, кто сделал тебе рекламу?

https://t.me/main_anonymous

Теги:
Всего голосов 2: ↑0 и ↓2-2
Комментарии0

Сервис ITOA: Image to ASCII Converter превращает любое изображение в ASCII-картинку — в цвете или монохроме. Результат можно сохранить в символах или в PNG.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии1

Ближайшие события

Трудно найти в темной комнате документ, особенно если его там нет

Представим, что нам нужно сделать нормальное фото документа, но положить листик как в сканере — более-менее ровно, в фокусе, под достаточным и равномерным светом — мы не можем. Поможет ли здесь ИИ? Конечно, если мы научим его решать некоторые вопросы, например:

  • Есть ли вообще документ на фото?

  • А это лист А4 или микроволновка?

  • Если есть, где его границы?

  • Если границы кривые, как их выпрямить?

  • А это документ или тень от документа?

Команда YADRO прошла этот квест, начав с простых CV-алгоритмов. По пути собрали свою нейросеть, а также инструмент для создания подходящих датасетов на основе модификации ControlNet для Stable Diffusion. В результате планшет Kvadra_T научился определять документы в реальном времени — прямо в приложении камеры.

Все подробности развития проекта, включая схемы реализации и подробные параметры обучения, — в статье Владислава, CV Engineer YADRO. 

Теги:
Всего голосов 3: ↑3 и ↓0+4
Комментарии0

Мини-гайд: что делать, если не загружается изображение в статью на Хабре.

При публикации статьи на Хабре, и на других платформах, я столкнулся с проблемой загрузки некоторых изображений — при загрузке изображения выходила "Неизвестная ошибка". Как оказалось, проблема состоит в том, что алгоритмы серверов платформ не пропускают изображения, так как определяют их как вредоносными.

Как решить проблему?

Способ 1. Отправьте изображение себе в Telegram в виде файла (без сжатия). Далее скачайте изображение из телеги. Предварительно удалите исходное изображение с компьютера.

Способ 2. Прогоните изображение через любую онлайн-ужималку.

После изображение можно будет загружать в статью.

Теги:
Всего голосов 3: ↑1 и ↓2+1
Комментарии4

Вышла новая версия AiPainter:

  • поддержка Flux (наверное, лучшая на данный момент модель для генерации изображений);

  • встроенный импорт моделей с civitai.com;

  • теперь под капотом используется, фактически, официальный бекенд для StableDiffusion моделей - ComfyUI.

Если хотите использовать Flux - готовьте 32 Гб оперативки (и ещё 32 Гб свопа) и 12 Гб видеопамяти. Видеокарта, как обычно, должна быть от NVIDIA.

Теги:
Всего голосов 2: ↑2 и ↓0+4
Комментарии0

Оптимизация изображений с помощью Image Stack

Loading… ⏰

Падают охваты из-за долгой загрузки страниц?

В мобильных приложениях, соцсетях и на веб-сайтах это может произойти из-за большого количества изображений.

Image Stack — функция CDN — помогает решить проблему и уменьшить объем передаваемых данных. Инструмент автоматически оптимизирует изображения, улучшает SEO-результаты и повышает уровень конверсии.

В новом материале рассказываем, как работает Image Stack, кому он подходит и какие задачи решает. Также оставили инструкцию по подключению функции.

Читать статью в Академии Selectel→

Теги:
Всего голосов 7: ↑7 и ↓0+12
Комментарии0

На Олимпиаде-2024 пять тысячных секунды решили исход финала забега на 100 м.

Согласно фотофинишу, мужскую 100-метровку в нереально плотной развязке выиграл американец Ноа Лайлс, опередил ямайца Кишана Томпсона. У чемпиона 9,784 с.

У серебряного призёра – 9,789 с.

Согласно правилам, выигрывает забег первый бегун, чей торс пересёк финишную линию.

Теги:
Всего голосов 2: ↑2 и ↓0+4
Комментарии0

Омар Шехата поделился одним из своих самых популярных проектов. Это крошечное веб-приложение JPEG Viewer для демонстрации алгоритмов, которые работают в формате сжатия JPEG.

Страница демонстрирует, как изображение разбивается на блоки 8×8 пикселей, каждый из которых затем подвергается алгоритму дискретного косинусного преобразования. Упрощённо можно сказать, что каждый из блоков математически преобразуется из двумерного изображения в сигнал, а затем представляется как сумма синусоид. Интересно в инструменте Омара то, что он допускает ручное редактирование преобразования каждого из блоков 8×8 пикселей.

Также Омар рекомендует свою статью про алгоритмы сжатия JPEG, в которой он применил схожие инструменты.

Теги:
Всего голосов 2: ↑2 и ↓0+3
Комментарии1

Представлен бесплатный нейроапскейлер AuraSR-v2 с бустом разрешения любых изображений в восемь раз. Заливаете шакал — получаете качество профессионального фотоаппарата.

Проект работает из браузера, в нём нет рекламы, нет водяных знаков и не требуется кредитов на апскейл.

Теги:
Всего голосов 3: ↑3 и ↓0+5
Комментарии3

Вклад авторов