|
0 / 0 / 0
Регистрация: 30.04.2014
Сообщений: 12
|
|
Яркость пикселей30.04.2014, 22:10. Показов 14942. Ответов 33
Метки нет (Все метки)
Добрый вечер форумчане. Необходимо реализовать пространственный сглаживающий фильтр с шириной окна 3. Для этого загружаемое изображение представляется в виде матрицы MxN, где элементы матрицы - яркость пикселей. Так вот, суть вопроса - что такое яркость пикселя? Как я понимаю Canvas->Pixels[x][y] находит лишь цвет конкретного пикселя или это одно и то же? Написал программу используя Canvas->Pixels[x][y], но по-моему получилась ерунда. Для примера прикреплю результат работы программы, просьба сказать, бред это или нет, ибо я понятия не имею, что такое пространственный сглаживающий фильтр и как должен выглядеть результат)
Результат - http://gyazo.com/a1e5246c79405218cc6d7be5b710c137 Исходное изображение - http://gyazo.com/18fb13de086753589247830dc8dc160a
0
|
|
| 30.04.2014, 22:10 | |
|
Ответы с готовыми решениями:
33
Яркость пикселя
Яркость, контрастность и насыщенность в RGB |
|
519 / 307 / 58
Регистрация: 30.07.2008
Сообщений: 607
|
||||||
| 30.04.2014, 22:41 | ||||||
|
Отрыл у себя в бакапах проект, где использовал яркость пиксела вот одна из функций
3
|
||||||
|
0 / 0 / 0
Регистрация: 30.04.2014
Сообщений: 12
|
|
| 01.05.2014, 00:26 [ТС] | |
|
Gremlin, не подскажете, почему идет умножение на 77, 151 и 28, просто разобраться на будущее?
0
|
|
|
|
|||||||||||
| 02.05.2014, 00:57 | |||||||||||
|
Я в инете увидел следующую формулу яркости пикселя:
0
|
|||||||||||
|
place status here
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,012
|
|
| 02.05.2014, 01:25 | |
|
Приблизительно так: умножили на число, а потом с помощью побитого сдвига от множителя избавляемся.
Стопроцентной точности нет, но погрешность не сильно большая.
0
|
|
|
|
|||||||
| 02.05.2014, 09:31 | |||||||
|
и чем больше число, тем больше точность. Вот, кстати, пример сделал (может кому-нибудь будет полезен):
0
|
|||||||
|
0 / 0 / 0
Регистрация: 30.04.2014
Сообщений: 12
|
||||||||||||||||||||||||||
| 02.05.2014, 12:28 [ТС] | ||||||||||||||||||||||||||
|
Спасибо за ответы, но теперь, собственно, возник еще один вопрос - как присвоить пикселю новую яркость? Как я понимаю, нужно сначала разложить всю картинку на RGB составляющие, а затем перевести это в YUV составляющие
То есть код будет выглядеть вот так
Если сделать так, то программа попросту зависает:
Кликните здесь для просмотра всего текста
0
|
||||||||||||||||||||||||||
|
|
||||
| 02.05.2014, 14:20 | ||||
|
0
|
||||
|
|
|
| 02.05.2014, 14:43 | |
|
Вечно вы любите велосипеды писать:
http://docwiki.embarcadero.com... orRGBToHLS http://docwiki.embarcadero.com... orHLSToRGB
0
|
|
|
|
|
| 02.05.2014, 15:46 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 30.04.2014
Сообщений: 12
|
||||||
| 02.05.2014, 15:55 [ТС] | ||||||
|
Я дурак, ошибся в одной буковке и поэтому программа зависала
Сейчас вроде работает, по крайней мере яркость действительно меняется.Оригинал http://gyazo.com/e634b99f926a17940013cd92ac6c3549 Результат http://gyazo.com/df3ff2a7c7dceafc49cd42300a9dfc9a Я правда не знаю, правильный ли это результат, так как сталкиваюсь с фильтрами впервые) Если кто-нибудь знает, отпишитесь, похоже ли это на правду. Исправленный код Кликните здесь для просмотра всего текста
0
|
||||||
|
|
||
| 02.05.2014, 15:59 | ||
|
есть где прочитать?
0
|
||
|
0 / 0 / 0
Регистрация: 30.04.2014
Сообщений: 12
|
|
| 02.05.2014, 16:09 [ТС] | |
|
kzru_hunter, Отклик простейшего линейного пространст*венного фильтра представляет собой среднее значение элементов окрестности, по*крытой маской фильтра. Такие фильтры называются усредняющи*ми или сглаживающими. За*меной исходных значений элементов изображения на средние значе*ния по маске фильтра достигается уменьшение изменений яркости. Как следствие, таким способом решаются следующие задачи:
Походу хрень, а не программа у меня Буду переделывать
0
|
|
|
519 / 307 / 58
Регистрация: 30.07.2008
Сообщений: 607
|
|
| 02.05.2014, 18:44 | |
|
kzru_hunter, вы правы, я использую именно эту формулу (0.299*r + 0.587*g + 0.114*b) ... нужна предистория:
Я решил написать бота для игры, бот графический (этот код по для определения яркости нужен для распознования текста), мой первый вариант был BMP->Pixels[x][y], но производительность была низкой, потом мне подсказали что лучше использовать ScanLine, производительность выросла, но мне этого все равно не хватало, и потом подсказали такой вот примерчик "(((r * 77) + (g * 151) + (b * 28)) >> 8);", еще несколько возрасла производительность т.е. эти 2 формулы идентичны Тот кусок кода, который я предложил (мне помогали его ускорить) 1) Работает быстрее 2) При повторном проходе не путается, и не делает изображение темнее с каждым последующим проходом gunslinger - ответил правильно, из за того, что байт это целое число, оно не особо дружит с дробными, числами, из за этого и идут погрехи http://pasteboard.co/2zbwWeyr.png 100 проходов справа: со смещением на 8 бит слева: функция из вики в Edit'ах под ними время выполнения http://pasteboard.co/2zbL0iJa.jpg - полноразмерный оригинал, для теста сжимал картинку иначе долго обрабатывалось бы))))
0
|
|
|
0 / 0 / 0
Регистрация: 30.04.2014
Сообщений: 12
|
|
| 02.05.2014, 20:24 [ТС] | |
|
Можете объяснить, почему происходит следующее:
есть 2 переменные типа byte - sum и Y. Вставляю в программный код 2 строчки: sum=Y+Y+Y; Y=sum/3 По сути, ничего не должно изменится, но картинка очень сильно искажается, меняются цвета.
0
|
|
|
519 / 307 / 58
Регистрация: 30.07.2008
Сообщений: 607
|
||||||
| 02.05.2014, 22:02 | ||||||
|
Если sum - BYTE то все немного проясняется,
Например Y = 123
255 + 1 то будет 0 255 + 2 = 1 255 + 3 = 2 ... 255 + 255 = 254
1
|
||||||
|
|
|||||||
| 03.05.2014, 13:35 | |||||||
|
Добавлено через 45 минут Если нужно усреднить пиксели исходного изображения, то можно просто найти среднее арифметическое RGB составляющих каждого пикселя в окне 3x3:
допустим R=255,G=255,B=0, тогда Y=225.93, U=16.82255, V=25.50255 меняем Y на 10, тогда R= -106,8296684335 <- выход за диапазон принимаемых значений
1
|
|||||||
|
0 / 0 / 0
Регистрация: 30.04.2014
Сообщений: 12
|
|
| 03.05.2014, 20:33 [ТС] | |
|
kzru_hunter, да, в самом задании сказано, что необходимо составить матрицу яркостей пикселей. В изображении действительно появляется огромное количество красных, синих, зеленых точек, не знаете, как от них избавится?
0
|
|
| 03.05.2014, 20:33 | |
|
Помогаю со студенческими работами здесь
20
При изменении значения ползунка, изменять яркость рисунка
Считывание пикселей в игре Поиск пикселей в изображении Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|