|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
||||||
Добавить к коду подсчет яркостей22.09.2020, 09:49. Показов 7805. Ответов 124
Метки нет (Все метки)
Хочу расширить код подсчитывая количество значений яркости dithPixel например в виде структуры [Value, Count], но не могу вспомнить как это сделать через хеши (именованные массивы).
0
|
||||||
| 22.09.2020, 09:49 | |
|
Ответы с готовыми решениями:
124
Добавить к коду подсчет вызовов функции Подсчёт суммы значений в ячейках по столбцу по коду товара Добавить комментарии к коду |
|
Модератор
|
|||||||
| 30.09.2020, 13:45 | |||||||
|
Вот полный Code Behind. Метод режет заданное количество точек. В примере исходное изображение и его срезы по 25%, 50% и 75% количества точек. Форма адаптивная - размеры рисунком подстраиваются под изменения размеров формы.
0
|
|||||||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
|
| 30.09.2020, 13:58 [ТС] | |
|
0
|
|
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
|
||
| 30.09.2020, 15:51 | ||
|
Вот выкладываю исправленный вариант и еще 3 других варианта в тестовом проекте с бенчмарком. Варианты GetBrightnessSafe и GetBrightnessV4 (ваш последний с моим исправлением) выдают примерно одинаковую скорость (у меня ~40мс), но всё равно уступают почти в 2 раза варианту с unsafe доступом к массиву (~20мс).
1
|
||
|
Модератор
|
|||
| 30.09.2020, 17:31 | |||
![]() Только если я там где-то ошибся, но там надо тогда искать логику в ошибке. У каждой задачи свой диапазон массива и они никак не перекрешиваются. От синхронизации (в данном случае) только доп задержки будут. Я обработал пару рисунков - судя по эффектам работает правильно. Добавлено через 2 минуты И у меня не получается нормально протестировать - старый комп.
0
|
|||
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
|
|||||||||||||
| 30.09.2020, 17:32 | |||||||||||||
1
|
|||||||||||||
|
Модератор
|
|||
| 30.09.2020, 17:36 | |||
|
Чтобы случайно не захватить локальные переменные. Добавлено через 2 минуты Вы правы. Я эту часть не доделал когда с локального метода убирал. Но там не синхронизация нужна. Сейчас занят часа через три исправлю и скину другой варинат.
0
|
|||
|
Модератор
|
||||||
| 30.09.2020, 20:51 | ||||||
|
belalugoci, исправил указанную Someone007 ошибку в логике и добавил комментариев:
0
|
||||||
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
|
||
| 01.10.2020, 01:13 | ||
|
Результаты тестов: .NET Framework 4.8 x64 (x86 работает медленнее, и он включен по умолчанию, обязательно отключить) GetBrightnessSafe 28 мс GetBrightnessUnsafe 21 мс GetBrightnessV4 30 мс GetBrightnessST 412 мс .NET Core 3.1 x64 GetBrightnessSafe 27 мс GetBrightnessUnsafe 20 мс GetBrightnessV4 28 мс GetBrightnessST 293 мс (тут у .NET Core неплохой выигрыш почему-то) Видно что Parallel.For (используется в GetBrightnessSafe и GetBrightnessUnsafe) отлично справляется с распределением задачи на несколько потоков автоматически и нет никакой необходимости делать это вручную как сделал Элд Хасп. Да и само API довольно удобное и гибкое.
0
|
||
|
Модератор
|
||||||||
| 01.10.2020, 08:04 | ||||||||
|
У меня первый вариант (не помню выкладывал здесь или нет) был с отдельной задачей для каждой строки. Он был в 2-2,5 раза быстрее чем синхронный. Потом решил проверить как влияет количество потоков (прочитав пост от Usaga). Уменьшил до 25 - скорость увеличилась в два раза. Потом уменьшил до 10 - такая же как при 25. Но возможно, эти результаты только для старых компов. Вариант с задачей для каждой строки, по коду значительно проще. belalugoci, если у него скорость такая же на вашем компе то надо его использовать. Добавлено через 12 минут
Просуммировать массив int[511] - это уже не миллисекунды, а микро. Даже для моего компа. В конечном варианте вы исправили массив countsTotal на int[511]? Блокировка оказала бы (возможно) влияние, если бы внутри каждой строки результат сразу накапливался в data.countsTotal без использования буфера data.countsLocal.
0
|
||||||||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
|||||||||
| 01.10.2020, 08:09 [ТС] | |||||||||
|
железо i3-4170, 4G RAM ОС 32-bit Win7 Кликните здесь для просмотра всего текста
Версия Core у меня не запускается, просит переключиться на preview, но где именно я не найду (MS очень сложно предложить переключить сразу или открыть окно где это можно сделать).
0
|
|||||||||
|
Модератор
|
|||
| 01.10.2020, 08:20 | |||
|
Добавлено через 4 минуты
0
|
|||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
|||
| 01.10.2020, 08:33 [ТС] | |||
|
У меня дома ноутбук i5-2520M, ПК i5-3570, собранные совсем недавно.
0
|
|||
|
Модератор
|
||||||||
| 01.10.2020, 08:56 | ||||||||
|
Я к тому, что если на моём компе код работал иначе чем у Someone007, то на вашем тоже будет так же. И методы реализации надо выбирать оптимальные под ваш комп. Добавлено через 2 минуты Поменять в нём надо только Form1 на название вашей формы. Это в строке
Размер формы роли не играет. И она должна быть пустая.
0
|
||||||||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
||||||||
| 01.10.2020, 09:04 [ТС] | ||||||||
|
Код в целом работает очень быстро, заметно быстрее того, что было раньше. Еще несколько методов нужно добавить. Пока вижу это как преобразование BrightnesData исходя из потребности. Номером один идёт наложение матрицы шума (dithering), для универсальности файл с шумом лучше передавать как параметр например Bitmap.Типа такого:
Примеры шума во вложении.
0
|
||||||||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
||||||||||||||
| 01.10.2020, 10:20 [ТС] | ||||||||||||||
|
Добавлено через 1 час 1 минуту
0
|
||||||||||||||
|
Модератор
|
|||||
| 01.10.2020, 10:52 | |||||
|
На одном один быстрее работает, на другом - другой. Добавлено через 1 минуту У меня же так и сделано. Матрица яркости создаётся один раз. А потом в метод среза уже передаётся она, а не исходная картинка. Добавлено через 37 секунд Только обратите внимание: Матрица яркости в истинных единицах - это целое число от 0 до 510. Добавлено через 2 минуты Добавлено через 2 минуты Хочу сравнить с моим компом.
0
|
|||||
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
|
|||||
| 01.10.2020, 12:13 | |||||
|
Вот у вас получились средние значения:
0
|
|||||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
|||||||
| 01.10.2020, 13:17 [ТС] | |||||||
0.2013975 0.0010291 0.0048779 0.1903822 Это значение sw.Elapsed.ToString()
1
|
|||||||
| 01.10.2020, 13:17 | |
|
Добавить комментарии к коду
Добавить к коду многоадресный делегат К готовому коду добавить процедуру К коду добавить вывод в консоль Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|