|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
||||||
Добавить к коду подсчет яркостей22.09.2020, 09:49. Показов 7038. Ответов 124
Метки нет (Все метки)
Хочу расширить код подсчитывая количество значений яркости dithPixel например в виде структуры [Value, Count], но не могу вспомнить как это сделать через хеши (именованные массивы).
0
|
||||||
| 22.09.2020, 09:49 | |
|
Ответы с готовыми решениями:
124
Добавить к коду подсчет вызовов функции Подсчёт суммы значений в ячейках по столбцу по коду товара Добавить комментарии к коду |
|
14314 / 9399 / 1355
Регистрация: 21.01.2016
Сообщений: 35,434
|
|
| 22.09.2020, 13:29 | |
|
belalugoci, гистограмму, что ли, построить хотите?
0
|
|
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
|||||||||||
| 24.09.2020, 11:59 [ТС] | |||||||||||
Добавлено через 9 минут
0
|
|||||||||||
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,575
|
||||||
| 24.09.2020, 12:11 | ||||||
Щас бы пиксели в строку переводить, чтобы посчитать сколько каких...
0
|
||||||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
|||||||||||||
| 25.09.2020, 06:33 [ТС] | |||||||||||||
|
Я свой вариант представлю позже.
Добавлено через 42 минуты
0
|
|||||||||||||
|
Модератор
|
||
| 25.09.2020, 09:18 | ||
|
Но на первый, внешний взгляд, замена string на int выглядит намного лучше.
0
|
||
|
Модератор
|
||
| 25.09.2020, 18:07 | ||
Сообщение было отмечено Toros1992 как решение
РешениеВ дефолтных Net такого, вроде, нету. Добавлено через 2 минуты int PPixel = (int) Math.Truncate(pixel * 1000) vs int PPixel = (int) (pixel * 1000) - одно и тоже.Добавлено через 2 минуты Какой возможный диапазон значений у PPixel ? Возможно использование обычного массива вместо Dictionary<int, int> array будет эффективнее.
0
|
||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
||||
| 28.09.2020, 05:41 [ТС] | ||||
|
Могу заблуждаться, покажите свой вариант.
0
|
||||
|
Модератор
|
||
| 28.09.2020, 08:25 | ||
|
Для чего вы используете int cсловарь? Чтобы по ключу (индексатору) хранить значения. Поиск ключа в словаре, это хоть и быстрая операция, но тоже производится не за одну команду: получается хеш код индексатора, по хешу производится поиск по бинарному дереву хешей ключей, в найденной группе производится линейный поиск по значению ключа, извлекается значение связанное с найденным ключом. Добавление же нового ключа в словарь, часто приводит к необходимости увеличения его ёмкости, а это сложная операция в которой участвует ОС для выделения нового участка памяти и перезапись в него существующих значений. Сравнительная скорость (с линейным поиском) такой обработки очень сильно зависит от размеров коллекции, от деталей реализации словаря и линейной коллекции, даже слегка зависит от конкретного компьютера. Но в целом можно принять, что для коллекций до сотни элементов линейный поиск будет быстрее. У вас тысяча элементов и скорее всего распределённых равномерно по диапазону. В таком случае словарь будет предпочтительней. Но я писал не за линейный поиск. Я писал о замене словаря на массив. Если диапазон ЦЕЛЫХ ключей заранее известен, то можно объявить массив размером с этот диапазон. И, так как ключ - это индексатор, использовать его как индекс массива. Извлечение элемента массива по индексу - это хоть и не атомарная операция, но очень близкая к ней. Скорость её выполнения в десятки, возможно, в сотни раз выше чем извлечение по ключу из словаря. Так же не возникает обращений к ОС для изменения размера массива. Недостаток такого подхода в том, что в случае РАЗРЕЖЕННЫХ ключей и большого их диапазона, для массива может потребоваться ОГРОМНЫЙ размер и большая его часть при этом использоваться не будет. НО!, для задачи с тысячей, десятком тысяч и даже миллионном простых элементов - размер не существенен. Поэтому, на мой взгляд, конкретно в этой задаче, создать массив int[1000] будет много эффективнее чем словарь с такой же ёмкостью. Опять таки - это не заменена хеш-поиска на линейный поиск, вы используете вместо него прямую выборку. Это совсем другая операция и выполняется она несравнимо быстрее.
1
|
||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
||
| 28.09.2020, 09:37 [ТС] | ||
|
идею уловил, тогда как быстро и правильно избавляться о нулевых значений? Простым IF?
0
|
||
|
Модератор
|
|||||||
| 28.09.2020, 09:48 | |||||||
|
Если надо выбрать наибольшие и определить их индексы (яркости), то самое простое, но возможно не самое быстрое, это использование LINQ.
Есть свои плюсы и минусы у этого метода.
0
|
|||||||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
|
| 28.09.2020, 10:02 [ТС] | |
|
0
|
|
|
Модератор
|
|||||||
| 28.09.2020, 10:40 | |||||||
|
Сортировка по возрастанию (значений) с игнорированием нулевых элементов. В результирующем массиве - кортежи значение-индекс(яркость).
0
|
|||||||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
||
| 28.09.2020, 11:28 [ТС] | ||
|
По времени исполнения различий нет, картинка 3840х2400 считалась 5,5 сек в первом случае и так же во втором.
0
|
||
|
Модератор
|
|||
| 28.09.2020, 11:55 | |||
|
После сортировки в массиве arrSort - кортежи (num, ind): ind - яркость, num - количество. В массиве нет элементов с num==0 и от отсортирован по num. Добавлено через 2 минуты Если это время критично для вас и его надо уменьшать, то возможно понадобится прямая работа с массивом пикселей. Без использования промежуточных методов. Скорее всего, для этого потребуется небезопасный код.
0
|
|||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
||
| 28.09.2020, 13:28 [ТС] | ||
|
Начитался тут всякого, нашел несколько примеров с opencv по работе с изображениями. Возможно отдельной темой лучше оформить, так как будет потребность в эквализации, выравнивании гистограммы (нормализации), квантовании. тема всё та же будет - обработка изображения для подготовки к печати лазерным гравёром.
0
|
||
|
Модератор
|
||
| 28.09.2020, 13:35 | ||
|
А здесь безопасный код платформы Net. на чтение всего пикселя несколько десятков (а может и сотен) атомарных операций.
0
|
||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
||
| 28.09.2020, 13:39 [ТС] | ||
|
0
|
||
|
14314 / 9399 / 1355
Регистрация: 21.01.2016
Сообщений: 35,434
|
|
| 28.09.2020, 13:58 | |
|
Так и уровень графики сейчас не ровня тому, что было в девяносто втором)
1
|
|
| 28.09.2020, 13:58 | |
|
Помогаю со студенческими работами здесь
20
Добавить комментарии к коду
Добавить к коду многоадресный делегат К готовому коду добавить процедуру К коду добавить вывод в консоль Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать контроль заполнения реквизита табличной части. . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|
|
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
|
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
|
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
|