Модераторы: Akina

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подсчет пятен, Как посчитать пятна??? 
:(
    Опции темы
cardinal
Дата 14.9.2003, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Так цвет получается неопределенный! Какой все таки цвет ты получаешь (один цвет): красный или зеленый?
Не красный и не зеленый, а цвет с яркостью 127 smile.gif .


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Black_Star
Дата 14.9.2003, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 192
Регистрация: 9.9.2003
Где: Minsk

Репутация: 4
Всего: 4



:Е Достал... пусть будет ЯРКОСТЬ !!!
Но если сам цвет 255, то яркость 127 - "тусклость" !
Это ладно... Возьми цвет желтый RGB(255,255,0)...
То RGB(127,127,0) похож на темный желтый, но ужасно...

PM ICQ   Вверх
-Mikle-
  Дата 15.9.2003, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 8
Всего: 59



Вы друг друга не понимаете smile.gif
cardinal, Black_Star прав, он говорит о том, что в RGB нет такого понятия как яркость, есть цвет из разных уровней 3 составляющих.
Black_Star, cardinal прав, он совсем и не доказывает что есть яркость у RGB, он просто говорит что пятно, для нашего глаза, это такой цвет, который при переводе в серые полутона, воспринимается нашим глазом темнее, чем другие. Например зеленый воздействует на сетчатку "мощнее", чем синий.

Вообще тема - это подсчет пятен. Реализовать это проще всего рассматривая картинку как черно-белое изображение, не вдаваясь в то, какого цвета сами пятна. В ЧБ картинке все три составляющие равны, и определяют, как бы, яркость белого цвета. Ты прав Black_Star, с позиции программы это просто разные цвета, но мы ищем ПЯТНА, которые может увидеть наш глаз на чб картинке, а это значит, что нам надо найти места, которые для глаза темнее, т.е. значение любой из 3 составляющих ЧБ изображения, например, меньше 100. cardinal просто берет цвет и сразу рассматривает его как черно-белую точку, называя полученное значение яркостью(т.е. насколько эта точка для нашего глаза темнее-светлее). Вот и все! smile.gif
Цитата
Но если сам цвет 255, то яркость 127 - "тусклость" !
Это ладно... Возьми цвет желтый RGB(255,255,0)...
То RGB(127,127,0) похож на темный желтый, но ужасно...
Ты не правильно понял, вот как должно это использоваться:
Цитата
Ф-ла: Q = R*0.3+G*0.59+B*0.11
у красного(255,0,0) Q=76.5, надо рассматривать цвет не (76.5, 0, 0) а (76.5, 76.5, 76.5)
у желтого (255,255,0) Q=226.95, надо рассматривать цвет не (226.95, 226.95, 0) а (226.95, 226.95, 226.95)@
Я тут их немного расскрасил для наглядности(чтоб прочитать выделите цитату до символа "@")
Удачи! adv/76.gif


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
Mephisto
  Дата 15.9.2003, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 2
Всего: 34



-Mikle- прав разница между яркостью и цветом не так уж и важна. Предложение -Mikle-а перевести в ч/б я уже пробовал. Напомню, что искомая картинка это отсканированая фотография из электромикроскопа sad.gif . Очень много мелких точек которые комп воспринимает как пятна. Я уже пробовал создавать доверительный интервал размера пятен, но как вы понимаете получается уж очень громоздко. notify.gif

Вообще есть идея: при встрече пятна изучать его размеры, затем брать его в простую фигуру(например круг) и заливать его каким-либо цветом например vbGreen, при следуещей встрече с vbGreen_ом просто проходить мимо. В результате количество таких заливок и будет искомое кол-во пятен.

Может у кого есть идеи проще?exclamation.gif Спасибо.

Это сообщение отредактировал(а) U-Boot - 18.9.2003, 16:52
PM   Вверх
Mephisto
  Дата 18.9.2003, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 2
Всего: 34



Люди, нужны ещё идеи. baaa.gif
PM   Вверх
cardinal
Дата 18.9.2003, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Я если честно пока не понял, почему тебе не подошла та идея, которую я тебе еще в начале темы написал. Если картинки, которые ты сканируешь не очень большие, то кинь мне их на ящик, чтобы я понимал, что надо сделать получше. А если они здоровые, то вырежи фрагмент и кинь его на ящик. У меня просто подключение к инету не самое быстрое, да и ящик маленький sad.gif


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Mephisto
  Дата 22.9.2003, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 2
Всего: 34



OK в скором времени постараюсь вытащить фото в инет и сделать его доступным для всех. bored.gif
PM   Вверх
Mephisto
  Дата 27.9.2003, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 2
Всего: 34



Цитата
Я если честно пока не понял, почему тебе не подошла та идея, которую я тебе еще в начале темы написал

Идея конечно супер, но....
Цитата
ты можешь сделать два буфера. При первом просмотре картинки ты запишешь в первый буфер яркости твоих точек, а при втором просмотре ты будешь писать в буфер номер пятна. Вобщем у тебя должен в конце концов быть такой результат:

-----------------------------------------------------
----11111------------------------------------------
-------111111------------------2222222---------
------11111111---------------------2222222----
----------1111111------------------22222222---
--------------------------------------------222222
-------------------------------------22222222222
----333333333------------------------------------
---------333333333-------------------------------
---------3333333333333-------------------------

Ну и соответственно самая большая цифра второго буфера это и есть количество пятен на твоем рисунке.

Хорошо, но есть вопрос: как при переходе на следующую строчку определить является ли найденое пятно продолжением первого, либо это уже пятно номер 3? notify.gif

PM   Вверх
cardinal
Дата 27.9.2003, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Ты бегаешь по строчкам слева направо, соответственно если слево от точки стоит цифра, то если if по темноте проходит, текущая точка будет с этим же номером. Если слева пусто, то ты смотришь на строчке выше. Если ты там найдешь на позициях (текущая точка - ширина bmp - 1) или (текущая точка - ширина bmp) или (текущая точка - ширина bmp + 1) каую нибудь цифру, то и текущей точке ты присваиваешь эту цифру, если нет, то это новое пятно.


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
maxim1000
Дата 28.9.2003, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: нет
Всего: 110



Цитата
Ты бегаешь по строчкам слева направо, соответственно если слево от точки стоит цифра, то если if по темноте проходит, текущая точка будет с этим же номером. Если слева пусто, то ты смотришь на строчке выше. Если ты там найдешь на позициях (текущая точка - ширина bmp - 1) или (текущая точка - ширина bmp) или (текущая точка - ширина bmp + 1) каую нибудь цифру, то и текущей точке ты присваиваешь эту цифру, если нет, то это новое пятно

еще нужно предучмотреть механизм объединения пятен:
это придется делать в случае U-образных пятен
например, обработанные строки будут такие:
00000000000000000000
00000111100000220000
00001111100022222000
00000111100022200000
00000001110022200000
а следующая строчка:
000000000*****000000


--------------------
qqq
PM WWW   Вверх
cardinal
Дата 28.9.2003, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Да, maxim1000, есть такое дело. Спасибо, за дельный совет!
Цитата
еще нужно предусмотреть механизм объединения пятен

А механизм прост. Надо только переделать немного то, что я описал сверху smile.gif.

Ты бегаешь по строчкам слева направо, соответственно если слево от точки стоит цифра, то если if по темноте проходит, текущая точка будет с этим же номером. Если слева от точки стоит цифра и ты находишь на строчке выше на позициях (текущая точка - ширина bmp - 1) или (текущая точка - ширина bmp) или (текущая точка - ширина bmp + 1) какую нибудь цифру, то значит мы имеем U-образное пятно. Ту цифру, которую мы нашли сверху (и остальные такие же в буфере) мы заменяем на цифру, которая находится слева от точки.
Если слева пусто, то ты смотришь на строчке выше. Если ты там найдешь на позициях (текущая точка - ширина bmp - 1) или (текущая точка - ширина bmp) или (текущая точка - ширина bmp + 1) какую нибудь цифру, то и текущей точке ты присваиваешь эту цифру, если нет, то это новое пятно.

Ну и буфер (мне вот сейчас в голову пришло) надо сделать на две точки шире, чем сама картинка, тогда не надо будет бесконечно проверять на краю ты находишься или нет. Начинать надо в правильном месте и прыгать по строчкам тоже.


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Mephisto
  Дата 29.9.2003, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 2
Всего: 34



Спасибо всем кто ответил! Проблема подсчета пятен почти реализована. Осталось только тестировать.

Поступила новая задача, более сложная:
Имеется более плотная упаковка, необходимо так же подсчитать количество. Но сдесь это гораздо сложнее выполнить. Ну вобщем сами смотрите...

user posted image

Разные размеры картинок:
First 75x100 (3.8 kb)
Second 301x400 (32.9 kb)
Third 2029x2696 (399.3 kb)

Если есть какие идеи, то...
За раннее спасибо.

Это сообщение отредактировал(а) U-Boot - 1.10.2003, 16:55
PM   Вверх
cardinal
Дата 29.9.2003, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Цитата
Test image!

Ну и что нам с ним делать? Ты сам писать функцию начинай, а если что поможем!


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Mephisto
  Дата 29.9.2003, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 2
Всего: 34



Цитата
Цитата
Test image!

Ну и что нам с ним делать?

Да, прикольно получилось. tounge.gif
Это была версия для редактирования. Если картинка не подгружается, то можете посмотреть картинку по указанным адрессам. biggrin.gif
PM   Вверх
cardinal
Дата 29.9.2003, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Дааааа... Пятна оказывается не разделены четко, что делает все немного сложнее.
Ну тогда есть такое предложение:
Бегаешь по строчкам и ищешь какую нибудь светлую точку. Это будет что-нибудь типа середины пятна. От этой точки ты идешь вправо, вниз, влево и вверх пока не наткнешься на темную точку. Эти темные точки будут крайними точками пятна. Потом ты объединяешь эти четыре крайних точки, делая из них например прямоугольник. Этот прямоугольник будет приблизительно площадью, которую занимает пятно. Ну а потом, как ты уже и говорил можешь его залить, чтобы потом ясно было, где ты уже пятно отметил. Ну и так далее... Короче главное тут выбрать светлую границу и темную границу по которым ты и будешь определять "середина" это пятна или крайняя точка. В конце концов количество заливок - это и есть кол-во пятен +/- столько-то пятен (зависит от размера картинки). Но это дело такое. В конце концов потом ты можешь пробежать картинку четыре раза: с верхней левой точки, с верхней правой точки, с нижней левой точки и с нижней правой точки (ну чтобы каждый раз получались разные заливки), а результаты поделить на четыре. Я думаю результат будет неплохим.
Только вот жалко тебя omg.gif - средства отладки в VB для таких задач не предусмотрены, но это не значит, что сделать все что я написал невозможно, просто запаришься ты пока добьешься того, что все будет правильно работать.
Успехов!


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.1647 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.