Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?
Гродненский Форум
18 Июль 2025, 18:14:35
Новости, реклама:
   Главная   Новости Гродно Помощь Игры Календарь Войти Регистрация   Меню
Гродненский Форум > Компьютеры > Программирование
(Модераторы: Админ, barmalei) > Тема:

нужна помощь. обработка изображения.

Страниц  : 2 Далее»  Все   Вниз
  Печать  
Автор Тема: нужна помощь. обработка изображения.  (Прочитано 5210 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Jancka
Мегафлеймер
*******

Репутация: +3605/-4
Offline Offline

Пол: Женский
Сообщений: 15504


Просмотр профиля
« : 28 Февраль 2009, 23:03:42 »

задача такая. есть картинка - черно-белый объект. черный нужно заменить градиентом серого, причем чтобы градиент зависел от удаления точки от границы белой области. может кто-нибудь поможет. или хотя бы идею даст с помощью чего это можно сделать?
Записан
iddqd
Лёдчег
Почетный гродненец
*****

Репутация: +170/-10
Offline Offline

Пол: Мужской
Сообщений: 2275


Не уйдешь!

Просмотр профиля
« Ответ #1 : 01 Март 2009, 00:11:05 »

какине нибудь ограничения по поводу изображения есть?
Записан
Jancka
Мегафлеймер
*******

Репутация: +3605/-4
Offline Offline

Пол: Женский
Сообщений: 15504


Просмотр профиля
« Ответ #2 : 01 Март 2009, 00:28:59 »

да нет. скажем, это будет обчная картинка, которую я сама нарисую в фотошопе (или еще где - все равно). на ней будет фигура черного цвета с белыми включениями (одним или больше). реальный размер в жизни 15х15см, размер точки 1х1мм. так вот по мере удаления черных точек от границ этих белых включений (кратчайшее расстояние) интенсивность черного цвета должна изменяться. черный и белый тоже не обязательно, как и градиент. просто в начале это 2 цвета, а потом изменение одного из них.
Записан
_SworD_
Почетный гродненец
*****

Репутация: +79/-2
Offline Offline

Пол: Мужской
Сообщений: 1603


Все делай с умом!

Просмотр профиля WWW
« Ответ #3 : 01 Март 2009, 15:05:34 »

В Photoshop должно быть.
Записан
Jancka
Мегафлеймер
*******

Репутация: +3605/-4
Offline Offline

Пол: Женский
Сообщений: 15504


Просмотр профиля
« Ответ #4 : 01 Март 2009, 15:07:50 »

ну, там ведь нельзя задать это формулой?  Непонимающий
Записан
iddqd
Лёдчег
Почетный гродненец
*****

Репутация: +170/-10
Offline Offline

Пол: Мужской
Сообщений: 2275


Не уйдешь!

Просмотр профиля
« Ответ #5 : 01 Март 2009, 19:41:26 »

самая простая и тупая идея -  считаеш расстояние от каждой точки к каждой, находиш минимальное. О(n*n)
еще можно попробвать фильтром получить контур, и искать кротчайшее расстояние от точки к нему.
Записан
coolasm
Почетный гродненец
*****

Репутация: +102/-3
Offline Offline

Пол: Мужской
Сообщений: 1458


//---------//

Просмотр профиля
« Ответ #6 : 01 Март 2009, 20:13:45 »

Если картинка не сильно сложная, можно сделать в Illustrator-е при помощи mesh-градиента
Записан

HTTP Error 404 - File or directory not found.
Jancka
Мегафлеймер
*******

Репутация: +3605/-4
Offline Offline

Пол: Женский
Сообщений: 15504


Просмотр профиля
« Ответ #7 : 01 Март 2009, 21:57:59 »

а как мне это расстояние искать? там же 150х150 точек примерно. не руками же? что-то я себе этого не представляю. а как с контуром это сделать?  В замешательстве очень нужно..


А в Иллюстраторе как (картинка несложная)? я с ним не работала никогда, но если там можно, то придется срочно освоить. можно там задать формулу, т.е. определить закон заливки в зависимости от точек контура??
Записан
coolasm
Почетный гродненец
*****

Репутация: +102/-3
Offline Offline

Пол: Мужской
Сообщений: 1458


//---------//

Просмотр профиля
« Ответ #8 : 01 Март 2009, 22:25:38 »

А можно хоть на картинку посмотреть?
Записан

HTTP Error 404 - File or directory not found.
Jancka
Мегафлеймер
*******

Репутация: +3605/-4
Offline Offline

Пол: Женский
Сообщений: 15504


Просмотр профиля
« Ответ #9 : 01 Март 2009, 22:33:57 »

вот что-то подобное. для начала хватит даже без боковых белых пятен (по идее еще эти 2 пятна - белые контуры)



Добавлено: 01 Март 2009, 22:42:49
вот, каринку изменила. фишка именно в том, что белый контур неравномерный. а так как закон предусматривает именно кратчайшее расстояние точки черного контура до белого, то я ума не приложу как..
Записан
iddqd
Лёдчег
Почетный гродненец
*****

Репутация: +170/-10
Offline Offline

Пол: Мужской
Сообщений: 2275


Не уйдешь!

Просмотр профиля
« Ответ #10 : 01 Март 2009, 23:44:25 »

а как мне это расстояние искать? там же 150х150 точек примерно. не руками же? что-то я себе этого не представляю. а как с контуром это сделать?  В замешательстве очень нужно..


А в Иллюстраторе как (картинка несложная)? я с ним не работала никогда, но если там можно, то придется срочно освоить. можно там задать формулу, т.е. определить закон заливки в зависимости от точек контура??
ээ, так мы это не программируем?
Записан
coolasm
Почетный гродненец
*****

Репутация: +102/-3
Offline Offline

Пол: Мужской
Сообщений: 1458


//---------//

Просмотр профиля
« Ответ #11 : 02 Март 2009, 12:22:58 »

чет картинки не видно
Записан

HTTP Error 404 - File or directory not found.
spammer
Почетный гродненец
*****

Репутация: +78/-19
Offline Offline

Пол: Мужской
Сообщений: 1455


Пыхнуть не хотите?

Просмотр профиля
« Ответ #12 : 02 Март 2009, 13:02:20 »

походу должно решаться через матричное преобразование в фотошопе
Записан
RILLey_ELf
Гость
« Ответ #13 : 02 Март 2009, 14:34:07 »

ммм я бы воспользовался matLab
в целом можно взять волновой алгоритм (дейкстры) добавив в очередь преждевременно все белые точки, посчитать таким образом расстояние до ближайшего делого пикселя ну а дальше ясно

если не ясно то опишите задачу поточнее )
Записан
VooDoo
Почетный гродненец
*****

Репутация: +89/-1
Offline Offline

Пол: Мужской
Сообщений: 2885


Dum spiro spero

Просмотр профиля WWW Email
« Ответ #14 : 02 Март 2009, 15:43:33 »

нафига тут волновой алгоритм?  Шокирован

x*x+y*y = r*r спасёт мир Подмигивающий
Записан

Are you human? - My body is.
Do you feel pain? - My body does.
..- --- --- -.. --- ---
spammer
Почетный гродненец
*****

Репутация: +78/-19
Offline Offline

Пол: Мужской
Сообщений: 1455


Пыхнуть не хотите?

Просмотр профиля
« Ответ #15 : 02 Март 2009, 16:03:20 »

элегантное решение через фотошоп (как я понял постановку задачи)

1) выделяешь волшебной палочкой все черные области без установленного флашка "Contiguous" (веделяются все черные области на рисунке)
2) выполняешь команду Select->Modify->Feather, вводишь ширину для градиентной границы (получаешь градиентный селекшен)
3) выполняешь команду Select->Modify->Contract, вводишь это же значение (сжимаешь селекшен чтобы он не выходил за границы)
4) создаешь новый слой, заливаешь на нем этот селекшен черным цветом
5) создаешь еще один слой, заливаешь его полностью белым, подкладываешь под слой из п.4
6) скрываешь основной слой

вуаля

на риснке - до и после


* 1.jpg (26,97 Кб, 400x400 - просмотрено 273 раз.)

* 2.jpg (22,24 Кб, 400x400 - просмотрено 642 раз.)
Записан
Jancka
Мегафлеймер
*******

Репутация: +3605/-4
Offline Offline

Пол: Женский
Сообщений: 15504


Просмотр профиля
« Ответ #16 : 02 Март 2009, 16:50:27 »

спасибо большое за ответы. фотошоп, похоже, отпадает. ибо мне не просто размытая картинка нужна, а по определенному закону. а здесь размытый контур будет всегда повторять белый. если рассматривать кратчайшее расстояние до белой зоны, то картинка будет совсем другой. а вот матлаб заинтересовал.. правда, я в нем слабо варю.. есть там возможность загрузить каринку? нужно ослабление цвета (сигнала) по закону 1/(1+d), где d-кратчайшее расстояние до белого внутреннего контура в см. можно не совсем градиент, можно шаги бОльшими сделать, скажем, в 3-5мм.

Добавлено: [time]Mon Mar  2 16:01:00 2009[/time]
а как мне это расстояние искать? там же 150х150 точек примерно. не руками же? что-то я себе этого не представляю. а как с контуром это сделать?  :- очень нужно..


А в Иллюстраторе как (картинка несложная)? я с ним не работала никогда, но если там можно, то придется срочно освоить. можно там задать формулу, т.е. определить закон заливки в зависимости от точек контура??
ээ, так мы это не программируем?

программированием на мой взгляд было бы лучше. ибо картинка будет не одна..

Добавлено: [time]Mon Mar  2 16:21:17 2009[/time]
вот, вобщем, что меня уже "устроит". левая часть, пока как и была, правая изменилась по закону. шаг здесь довольно большой. но, в прниципе, мне хватит 10 цветов.

« Последнее редактирование: 02 Март 2009, 17:25:11 от Jancka » Записан
RILLey_ELf
Гость
« Ответ #17 : 03 Март 2009, 10:05:21 »

посмотрим по мат лабу тут
http://amath.colorado.edu/courses/4720/2000Spr/Labs/Worksheets/Matlab_tutorial/matlabimpr.html

x*x+y*y = r*r спасёт мир Подмигивающий
как я понял задачу:
у тебя есть im = [n][m]точек, точка = int(0..255) (учитывая что у нас градации серого) белыми областями называется набор точек где их цвет 255
в результате:
все чёрные точки (цвет = 0) должны сменить цвет в зависимости от расстояния до ближайщей белой точки по какой то определённой формуле (скажем d = pow( pow( x1-x2 , 2) + pow( y1-y2 , 2), 0.5 ) )
как ты формулой окружности собираешься искать ближайшую белую точку без перебора я пока не представляю,
но думаю что волновой алгоритм отлично это сделает
Записан
spammer
Почетный гродненец
*****

Репутация: +78/-19
Offline Offline

Пол: Мужской
Сообщений: 1455


Пыхнуть не хотите?

Просмотр профиля
« Ответ #18 : 03 Март 2009, 12:45:09 »

как я понял из рисунка автора, то я вообще не понял, что нужно сделать
Записан
iddqd
Лёдчег
Почетный гродненец
*****

Репутация: +170/-10
Offline Offline

Пол: Мужской
Сообщений: 2275


Не уйдешь!

Просмотр профиля
« Ответ #19 : 03 Март 2009, 13:28:10 »

да, второй рисунок ввел меня в заблуждение
кста, про окружность я тоже не вдуплил.  Грустный
Записан
Jancka
Мегафлеймер
*******

Репутация: +3605/-4
Offline Offline

Пол: Женский
Сообщений: 15504


Просмотр профиля
« Ответ #20 : 03 Март 2009, 13:33:42 »

ну, а как мне без окружности искать кратчайшее расстояние от черных точек до белых?  Непонимающий второй рисунок это "упрощение" градиента, мне такого хватит..

Добавлено: 03 Март 2009, 13:38:08
как я понял задачу:
у тебя есть im = [n][m]точек, точка = int(0..255) (учитывая что у нас градации серого) белыми областями называется набор точек где их цвет 255
в результате:
все чёрные точки (цвет = 0) должны сменить цвет в зависимости от расстояния до ближайщей белой точки по какой то определённой формуле (скажем d = pow( pow( x1-x2 , 2) + pow( y1-y2 , 2), 0.5 ) )
как ты формулой окружности собираешься искать ближайшую белую точку без перебора я пока не представляю,
но думаю что волновой алгоритм отлично это сделает


все правильно, это мне и нужно. только я и не знаю, как мне это кратчайшее расстояние искать. на листе бумаге имеет смысл именно окружность. ну, чтоб белая была как бы касательной. тогда расстояние будет наименьшим.
Записан
spammer
Почетный гродненец
*****

Репутация: +78/-19
Offline Offline

Пол: Мужской
Сообщений: 1455


Пыхнуть не хотите?

Просмотр профиля
« Ответ #21 : 03 Март 2009, 14:37:59 »

это то понятно
но при чем здесь рисунок с разбитым сердцем? он абсолютно не подходит как результат
Записан
Jancka
Мегафлеймер
*******

Репутация: +3605/-4
Offline Offline

Пол: Женский
Сообщений: 15504


Просмотр профиля
« Ответ #22 : 03 Март 2009, 14:52:05 »

я написала, что "обработана" там только правая половина. все моя природная лень  Смеющийся белые включения - это то, что по середине и возможно "въемки" по краям. фон мне не интересен. т.е. градиент или изменение цвета должны быть не со всем сторон, а только со сторон белых включений.

именно такой результат мне и нужен. не знаю просто как объяснить лучше..
Записан
spammer
Почетный гродненец
*****

Репутация: +78/-19
Offline Offline

Пол: Мужской
Сообщений: 1455


Пыхнуть не хотите?

Просмотр профиля
« Ответ #23 : 03 Март 2009, 15:13:28 »

я предлагаю автору тогда немного подумать и сформулировать задачу более конкретно, а то телепатов тут нет, или они скрываются, и понять что конкретно нужно просто невозможно
Записан
Jancka
Мегафлеймер
*******

Репутация: +3605/-4
Offline Offline

Пол: Женский
Сообщений: 15504


Просмотр профиля
« Ответ #24 : 03 Март 2009, 15:19:27 »

 Грустный
Записан
iddqd
Лёдчег
Почетный гродненец
*****

Репутация: +170/-10
Offline Offline

Пол: Мужской
Сообщений: 2275


Не уйдешь!

Просмотр профиля
« Ответ #25 : 03 Март 2009, 17:05:38 »

в лоб можна написать за пару минут. при больших разрешениях бут шляпа  Смеющийся
Записан
Jancka
Мегафлеймер
*******

Репутация: +3605/-4
Offline Offline

Пол: Женский
Сообщений: 15504


Просмотр профиля
« Ответ #26 : 03 Март 2009, 18:12:39 »

в лоб можна написать за пару минут. при больших разрешениях бут шляпа  Смеющийся

а можно подробнее? мне не надо работать с большими разрешениями. эта картинка нужна просто для визуальной оценки..
Записан
spammer
Почетный гродненец
*****

Репутация: +78/-19
Offline Offline

Пол: Мужской
Сообщений: 1455


Пыхнуть не хотите?

Просмотр профиля
« Ответ #27 : 03 Март 2009, 18:28:12 »

дело в том что если вам нужно, чтобы каждая черная точка стала серой, и ее засветка определялась удалением от границы области, то это именно то, что делает предложенный мной способ через селекшены фотошопа

но судя по вашему рисунку, вам нужно совсем не это. вот и хотелось бы узнать, что именно вы хотите получить
Записан
Jancka
Мегафлеймер
*******

Репутация: +3605/-4
Offline Offline

Пол: Женский
Сообщений: 15504


Просмотр профиля
« Ответ #28 : 03 Март 2009, 20:13:20 »

вот здесь на картинке показан смысл этой задачи. она решена здесь не с помощью цветов. а с помощью объемов. но ведь с помощью цветов должно быть проще? объем пиксела (значение цвета) уменьшается с расстоянием по закону 1/(1+d), где d-кратчайшее расстояние от "белого поля". они эту картинку потом только в градиент переводят (с большим шагом). и этот "градиент" он не повторяет контура области, именно потому, что расстояния будут браться кратчайшие, и значения будут отличаться. а в ыотошопе я не заметила отличий - все размыто одинаково, повторяя контур области. в идеале картинку я должна загрузить туда любую. а эти объемы могут быть не только по середине, но и с боков. может быть 1, а может быть и 3..

Записан
iddqd
Лёдчег
Почетный гродненец
*****

Репутация: +170/-10
Offline Offline

Пол: Мужской
Сообщений: 2275


Не уйдешь!

Просмотр профиля
« Ответ #29 : 03 Март 2009, 22:10:31 »

теперь я еще больше запутался. то что вокруг белое значед не в счет. считается только белое включение по середине. чем дальше от него, тем белее. или как?
Цитировать
и этот "градиент" он не повторяет контура области, именно потому, что расстояния будут браться кратчайшие, и значения будут отличаться
я наверно туплю, но понятней не стало. хачу толковый пример с обозначениями какая область релевантна а какая нет. я понял задачу так же как и spammer, но эт оказывается не верно
Записан
Страниц  : 2 Далее»  Все   Вверх
  Печать  
 
Перейти в:  

Войти
Войдите, чтобы добавить комментарий

Войдите через социальную сеть

Имя пользователя:
Пароль:
Продолжительность сессии (в минутах):
Запомнить:
Забыли пароль?

Контакт
Powered by MySQL Powered by PHP Мобильная версия
Powered by SMF 1.1.20
SMF © 2006-2025, Simple Machines
Simple Audio Video Embedder
| Sitemap
Valid XHTML 1.0! Valid CSS!
Страница сгенерирована за 0,172 секунд. Запросов: 19.