24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
>>166493333 Ну я бы просто шёл по пикселям изображения (не по квадратикам) слева направо, ища любой небелый, а когда добрался бы до края, то начинал сначала, но на пиксель ниже. Так ты найдёшь верхний левый пиксель (не квадратик, а именно пиксель) изображения. После чего продолжил бы идти влево, считая пиксели до тех пор, пока твои пиксели не изменят цвет. Вот это и будет ширина квадратика в пикселях. Если твой квадратик - паралелепипедек, то проделываешь то же самое, только сверху вних. писал давно такую хуйню на шарпе
>>166494521 Не, это было дохуя давно. Лет 5 назад. Да я тебе алгоритм уже рассказал, осталось тока в код перевести. Кста, тебе нада количество всех квадратиков, или только закрашенных (не белых)?
>>166494690 Короч смотри какой у тебя алгоритм 1) начитаешь отсчёт где-то с 5-ти процентов высоты изображения, так как у тебя там хуйня, которая "Лавандовый посос" 2) Хуячешь построчно в поисках небелого пикселя. Доходя до границы хуячешь на пискель ниже. Всё работает в 2-х циклах for, как в остальных твоих лабах по сортировке матриц 3) Находишь первый небелый пиксель. Запоминаешь координаты в отдельную переменную. Оно тебе ещё пригодится. Далее делаешь шаг в сторону и вниз, так как твои квардатики имеют обводку, а она чот не белая, я смотрю. Далее идёшь попиксельно вбок и считаешь пиксели до тех пор, пока цвет не изменится. Вот твоя ширина. Если у тебя в условии именно квардатики, то заебись, ты знаешь размеры квадратика. Если это прямоугольники, то от сохранённых координат делаешь шаг в сторону и вниз и идёшь так же вниз, до изменения цвета. ПОлучаешь высоту. Так ты имеешь ебаные размеры квадрата. Дальше самое интересное 4) Делишь ширину и высоту на 2 и получаешь половинчатые размеры. От сохранённых координат первого пикселя перемещаешься на половину ширины и высоты квадрата. Так ты оказываешься в центре первого закрашенного квадрата. Нахуя это делать? А затем, что далее по пикселям бежать оче долго и мы будем бежать по квадратам, чем ускорим работу программы в несколько раз 5) С центра квадрата, на котором мы сидим прыгаем вбок на ширину квадрата. Если там белый пиксель, то прыгаем дальше. Если нет, то увеличиваем счётчик "DICKCUNT" на единицу. Идём тем же алгоритмом что и искали первый пиксель, только стартуем с сохранённых координат и прыгаем через ширину квадрата по ширине и высоту квадрата по высоте соответственно. Так твой маркер будет останавливаться в центрах квадратов, считая закрашенные в Dickcunt. В конце счётчик будет содержать твой ответ. Вопросы?
>>166495853 Ананас, ерунда на самом деле. Крутишься в 2-х циклах: по ширине и высоте, и сравниваешь цвета на соответствие с #FFFFFF. Я б тебе код написал, но я шарп ваще не помню
>>166497652 короч. Если отзумить твою пикчу, то там рядом с квадратиками видна ссанина. Эта ссанина будет поймана алгоритмом при поиске первого пикселя и всё пойдёт по пизде. Если твои пикчи будут так же хуёвого качества, то, значит, тебе нужно будет написать ещё проверку на ссанину, либо изначально считать пиксели конкретных цветов, а не всех небелых
>>166491743 (OP) Тут без нейронных сетей никак. Без блокчейна еще можно, а без нейронных никак. Надо нейронку обучать. Не, сами клеточки то можно и без нейронки. Но без нейронки никак. Сам посуди, без нейронки как. Ты же не отличишь заголовок от картинки без нейронки. Хотя можно каскадом Хаара пройтись конечно. Ну вообще тебе надо grid detection в каком то виде. Это как распознавание табличек в документах. https://mathematica.stackexchange.com/questions/13918/detecting-grid-lines-in-a-raster-image
>>166497941 да нет. Просто тебе нужно сравнивать не " != #FFFFFF", а, к примеру " == #00FF00", сечёшь? Проверяешь не на "не равен белому", а на "равен зелёному" Ну или как этот >>166498034 сказал. Только это уже сложновато для лабы. Не думаю, что у него это даже курсачом является
>>166498228 Ну я образно. Он-то будет чекать на зелёный, фиолетовый и тот коричневый с продрисью, в который дом покрашен. Но это не проблема несколько цветов выщемить
>>166498645 Ну, я, конечно, не 300к/сек фрилансер, но, думаю, что можно метод дописать, который дополнительно проверяет наличие вокруг пикселя белых пикселей (т.е. ищет, что вокруг него 7-8 белых), и смотрит, что цвет пикселя находится в диапазоне рядом с белым/светло-серым цветом. Если условия удовлетворяют этой проверке, то пиксель обозначается как фоновый шум. Хотя, скорее всего, я сейчас изобрёл нихуёвый велосипед на костылях, и всё должно быть проще. Если оно может быть проще, то расскажи как.
>>166499113 >>166499061 кстати. В данном случае ещё можно некоторые белые квадраты посчитать как закрашенные (например проблески в траве), которые и должны быть белыми, но при этом они являются частью изображения, а не фоном. И эту проверку можно использовать наоборот, где она так же годно сработает
>>166497853 Надо просто пикчу уменьшить в число раз = ширине квадрата. Тогда достаточно будет считать пиксели. И ебанина будет простым пороговым фильтром отсекаться.
>>166499308 Ах ты хитрый сукин сын. Но, если опу нужно точное количество квадратиков, и преподу известно это количество, то при сжатии может быть проёб
>>166491743 (OP) Ищи средний цвет по квадратикам строй матрицу. Каждый получившийся элемент матрицы приводи к классу эквивалентности того цвета из палитры к какому она ближе всего, если расстояние до любого из цветов палитры выше определенной константы, то просто не учитываешь. Далее просто считаешь по матрице количество, цветов.
>>166499536 Да, это тут я предложил >>166495391. Проблема в том, чтобы найти первый квадрат. Логично, что нужно найти первый пиксель, а там ссанина. Хотя, мне уже кажется, что просто можно поставить проверку после нахождения первого пикселя, что за ним должен быть другой не белый, но и не того же цвета, что и первый, а дальше, как минимум 2 (минимальное кол-во пикселей для формирования квадрата) такого же цвета. Так шум отсеивается и мы точно находим первый квадрат. И не нужно ебаться с доп.проверками по каждому пикселю, а можно скакать, как хохол по центрам
>>166499421 Смотря как свёртку написать. Вряд ли шум от пустого места много даст в итоговый пиксель. Потом, кстати, картинка преобразуется в чёрно-белую, используя порог яркости. И считаются чёрные пиксели.
О! Этот хуй >>166499849 на мысль натолкнул. Ищем самый распространённый цвет, что не сложно будет. Это будет белый. Высчитываем процент белого на картинке и процент остального. Находим размеры квадратика, считаем, сколько всего квадратиков есть на пикче (включая белые) и высчитываем процент небелых относительно имеющейся инфы. И вообще не нужно по квардатикам скакать
>>166500305 Да тут уже едёт вопрос: как охуеннее, чтобы препод обсерился от нестандартного подхода Короч, берём API яндекса и прогоняем пикчу через яндекс-картинки. на выходе получаем ответ. Оценку получаем напопополам с Воложем
Если ширина квадрата задана, то всё просто. Если же нет, то надо её найти. Т.к. квадраты разделены линиями, то можно делать так: Идём по столбцам. Ищем первую "линию", потом идём пока не найдём вторую, получаем ширину. Как найти линию - она либо вся одного цвета (серая, как на картинке, если квадратами заполнен весь столбец) либо есть белые участки (где квадратов нет). Если столбец посередине квадратов проходит - там будут три цвета или больше. Но это всё ещё с jpeg'вской ссаниной. Сложно, короче.
>>166491743 (OP) Если все квадраты/прямоугольники/прочая хня одинакового размера по всему рисунку, то 1. Считаешь размер фигуры (квадрата) в пикселях. 2. Считаешь количество небелых пикселей (или количество белых и потом вычитаешь их из общего кол-ва). 3. Делишь кол-во небелых пикселей на размер квадрата. Работает только для изображений, где все фигуры одинакового размера. И не забудь вырезать надпись вверху.