Нужна прога для склейки из нескольких фрагментов одного большого bmp файла. Фрагменты могут быть внахлест. Не так просто как кажется, потому стока и плачу, детали кто заинтересуется мылом
пиши ТЗ, иначе тебе наваяют батву.
Даю ТЗ. У меня маленькая контора по услугам печати и копирования и прочего. Занимаюсь в том числе копированием и сканированием формата А1 следующим образом. Засовываю в сканер А3 большой ватман 4 раза подряд а потом в фотошопе склеиваю из кусков. Надоело. Пусть прога сама доворачивает на нужный угол, обрезает, совмещает и склеивает. Это еще недорого за работу, если учесть что сканер формата А1 стоит $6500
Поищи в Инете. По-любому такая программа уже есть.
Вот, например, PanaVue. Вроде так называется.
Даю ТЗ. У меня маленькая контора по услугам печати и копирования и прочего. Занимаюсь в том числе копированием и сканированием формата А1 следующим образом. Засовываю в сканер А3 большой ватман 4 раза подряд а потом в фотошопе склеиваю из кусков. Надоело. Пусть прога сама доворачивает на нужный угол, обрезает, совмещает и склеивает. Это еще недорого за работу, если учесть что сканер формата А1 стоит $6500
Хехе... улыбнул... ТЗ рульное. Было всё так в жизни просто... ))))))))))))))))
ps
ваше ТЗ придаёт новое значение слову примитивный. )))))))))))))))))
( данное сообщение похоже скорее на постановку задачи. И то абстрактно)
Попробовал PanaVue. Нет, не помогло. Дело в том, что куски сканируются внахлест, поэтому банальная склейка не подходит, алгоритм должен быть более интеллектуальным и процесс более автоматизированным. К примеру. Есть исходные файлы А1.bmp, A2, A3, A4. Файл А1-левый верхний угол, А2-левый нижний угол ватман, А3-правый верхний угол. Прога берет и совмещает обрезая где надо, поскольку понятно что для перестраховки сканироваться будет внахлест. Лучше обрезать, чем будет нехватать.
Уважаемые кодеры, чтобы понять что мне надо возьмите какую-нибудь бесплатную газету из почтового ящика, вроде Золушок На диване. Если ее сканировать на сканере А4 то разворот как раз занимает 4 раза(впритык) или 6 кусков если с большим нахлестом. И попробуйте эксперимент, получите исходный материал(4 или 6 файлов) и чтобы ваша прога их нормально склеила, беря в качестве исходных данных эти файлы , интерфейс не нужен. Если эксперимент удастся и будет повторяемым, значит у вас уже есть $500.
Думаю, тут задача слишком сложная. Тут сложный алгоритм и 500 баксами не отделаться. А прога такая скорее всего действительно существует. Правда вряд ли она стоит бесплатно, баксов 200-1000 могут за нее запросить
А ТЗ и правда примитивное. Мне тут недавно прислали ТЗ на 14 страниц с графиками, диаграммами и детальнейшим описанием каталога фотоаппаратов. Там было написано даже, что происходит с каждой ссылкой на странице при нажатии и наведении.
Пипец нада учиться програмировать...(
Тебе нужна прога с икуственным интерллектом? )) Не вопрос, только нолик припиши в зарплате
Да че тут сложного то понять не могу. Нет тут искусственного интеллекта. Опять эта фидошная атмосфера распития пива и жалоб на свою нелегкую жизнь с преждложениями поднять зарплату. Нормальному спецу можно и штуку баксов платить в месяц, но только их нет нормальных. Мамки никто в городе не ремонтирует, блоки питания тоже. Работа есть, специалистов нету. Хотите нормальных бабок, покажите сначала что умеете, а работы у нас в конторе всегда хватает. Могу оформить вашу прогу как преддипломную или еще какую практику.
Мамки и БП ремонтируют 100% В рейдере и напротив торговых рядов (забыл как конторка зовется).
А как дипломная работа она не пойдет Тема не та
Как я вижу эту задачу. Начинать всегда надо с простого. Будем считать что лист мы засунули в сканер идеально ровно поэтому доворачивать на определенный угол не надо. Основная проблема заключается в обрезке пиксель в пиксель. Хочу отметить, что сканируются чертежи а не фотографии, это облегчает дело. Итак имеются изображения 1 и изображение 2. Разбиваем изображение 1 на прямоугольные блоки. Берем первый блок и сравниваем с соответствующим блоком изображения 2. Затем Смещаем границу блока в изображении 2 на один пиксель по горизонтали опять сравниваем. Потом двигаем на один пиксель по вертикали. Это обычная операция перебора, то есть мы должны выявить совпадающий участок. Предвижу вопрос, участки никогда не совпадут, потому что еще есть фон. Все правильно, поэтому мы будем брать результаты сравнения не чистых матриц, а результатов функций над ними. То есть сперва мы прогоняем через функцию исходный блок, потом сравниваем с определенной долей вероятности с результатом фукции искомого блока. Понимаете, искомый блок это как небольшой кадр, как щель через которую мы смотрим на изображение и это маленькое окошко скользит по всему изображению 2 пока результаты фукций не совпадут, вернее пока вероятность совпадения не превысит к примеру 80%. Это еще не все, но идея понятна?
Напротив торговый рядов находится Эликс. Они берутся но делают только простые случаи, типа кондер вздулся. В Райдере тоже ушли не очень далеко. А кому там делать, у Брахмы своих дел хватает по складу, Денис заправляет и ремонтирует копиры, факсы и принтеры. Нормально, то есть квалифицированно у нас этого никто не делает, ни блоки питания ни мамки. В Эликсе мне последовательно не смогли отремонтировать ни мать, ни винт, ни моник. Больше не хожу.
Есть еще вещи облегчающие задачу. Здравый смысл подсказывает что в качестве искомого блока будет как раз область нахлеста, поэтому для изображения 1 (левый верхний угол ватамана) можно начать разбиение справа, а для искомого изображения 2 начать проверку слева.Мы таким образом минимизируем количество проверок. Далее, размер блока долженн быть заведомо менее размера нахлеста, иноче ничего не выйдет. Можно взять к примеру прямоугольник 200x200 пикселей. Самое важное-это фунция, которая и будет распознавать. Но опять таки здесь важен принцип постепенности. В качестве исходного образца возьмите не реальный скан газеты, а скажет снимите с экрана окно какой нибудь проги, чтобы не было повторяющихся фрагментов. В таких рафинированных условиях даже простая функция будет работать хорошо. А потом можно уже постепенно усложнять задачу. В качестве функции предлагаю следующее: берем блок. Скорее всего это будет кусок линии на белом фоне листа. Отсекаем фон и нормализуем линию, она ведь волнистая. В качестве результата фунции будет вектор, то есть мы в пределах блока ищем две крайние точки линии и проводим между ними отрезок, это и будет искомый вектор. Таким же образом обрабатываем блоки в изображении 2. Почему именно вектор? Нам важен угол линии, ведь в нашем упрощенном варианте мы считаем что оба изображения полностью как бы параллельны друг другу, их не надо доворачивать. Поэтому когда мы найдем два участка линий с одинаковым средним углом, то можно как бы застолбить это место и взять рядом уже блок, как бы детализируя, перепроверяя картинку, сужая область поиска итерационными методами.
Только что пришел в голову еще лучший алгоритм. Можно брать не прямоугольные блоки а вертикальный срез всей картинки толщиной 1-2 пикселя. И потом искать этот срез в изображении №2. Это намного проще. Единственное что искомый срез может быть смещен вниз или вверх, с точностью до долей миллиметра в сканер не засунешь, но это не так важно, потому что наша функция может просто брать расстояния между срезами линий. Ведь что то такое этот срез? Это белый пиксели(фон лист) а потом резко черный пиксель(срезаем линию) поэтому результат фукции будет что то вроде 2,5,8,4,2,1. Цифры-это относительные расстояния между черными точками, мы как бы фиксируем срез всех линий, а допустим результирущий срез будет 9,9,2,5,8,4,2. Но ведь вычленить строку 5,8,4,2 мы все равно можем. Тут есть небольшие конечно подводные камни, поскольку чисто белых или чисто черных пикселей не будет, а будут их промежуточные варианты, но сработать все равно должно. Надо сначала наверно преобразовать изображение или в битовый формат или в какой-нибудь формат с небольшой разрядностью и манипулировать преобразованными блоками.
вас послушать, так:
1. Ой, задача простая, но мне не нравится как ты её описываешь, так что не буду за неё браться.
2. Решения этой задачи не существует, что доказано ещё Эвклидом.
3. Короче, это только кажется, что два плюс два = четыре. На самом деле это нужно ещё проверить на самом точном ускорителе частиц. Не знаю, как ускоритель частиц поможет это проверить, но финансов нужно добавить.
4. А если взять скотч или масло, то можно шарик проткнуть спицей от велосипеда.
5. [Я никогда не признаю, что не способен решить эту задачу, по этому скажу - ] Вы все дураки, один я умный и по этому ничего не скажу.
Человек предложил работу, описал проблему, назначил цену. Чего ещё нужно? Не думаю, чтобы он хотел, чтобы тут собрались мега аналитики и начали обсуждать "смысл жизни". Скорее он хотел услышать ответы типы "Да я это сделаю" и "О не, мне это слабо" (наверняка второе ему тоже нафиг не нужно было). Даже алгоритм какой-никакой описали (хотя итак вроде понятно, что не обязательно два в квадрат возводить, чтобы бабушку через дорогу перевести).
За себя скажу: не берусь, ибо уже занят проблемой и не одной (не поймите неправильно B) ).
зы: на против торговых рядов, насколько мне известно - "Коннект" был когда-то.
напротив торговых рядов - Эликс.
а задача на мой взгляд реально сложная... и этот алгоритм имеет огромное количество этих подводных камней... это щас их не особо все видно...
Спасибо Arton1X. Подразобрался с PanaVue. В идеальных условиях она классно сшила из 4-х кусков. Здорово. Надо теперь пробовать на реальных сканах
Думаю справедливо было бы если ты артронику положил бы на счет рублей 300 за неоценимую помощь , а ТЗ нужно писать вместе с программером чтобы такая лажа не получалась
Спасибо Arton1X. Подразобрался с PanaVue. В идеальных условиях она классно сшила из 4-х кусков. Здорово. Надо теперь пробовать на реальных сканах
Да, незачто
Думаю справедливо было бы если ты артронику положил бы на счет рублей 300 за неоценимую помощь , а ТЗ нужно писать вместе с программером чтобы такая лажа не получалась
Не отказался бы
Да без проблем. Пусть приходит на Строителей 1, это вход рядом с Дефадом, по коридору налево, дверь "Информ-Сервис", бесплатно заправим что-нибудь, или со скидкой процентов 10 что-нибудь возьмет из расходников если понадобится.
Писать прогу не умеющую подбирать углы смысла нет (сидеть на корачках возле сканера, выравнивая ватман занятие не из приятных). Решение задачи, удовлетворяющее этому условию, несомненно требует титанического вычислительного ресурса (вплоть до применения сетевого рендеринга с участием десятков машин).
Хотелось бы заняться проблемой. Предложение еще в силе? Сроки?
Писать прогу не умеющую подбирать углы смысла нет (сидеть на корачках возле сканера, выравнивая ватман занятие не из приятных). Решение задачи, удовлетворяющее этому условию, несомненно требует титанического вычислительного ресурса (вплоть до применения сетевого рендеринга с участием десятков машин).
Хотелось бы заняться проблемой. Предложение еще в силе? Сроки?
как то ты сильно загнул про ресурсы... Fine reader разве углы не подбирает?..
ну то fine reader, там целая компания писала... а тут я один. у меня всегда получается, что медленно работает, зато работает.
А где собственно заказчик? писать программу нет? автовыборку угла я уже настрочил.
ну то fine reader, там целая компания писала... а тут я один. у меня всегда получается, что медленно работает, зато работает.
А где собственно заказчик? писать программу нет? автовыборку угла я уже настрочил.
Ты посты читал? "Заказчик" решил проблему благодаря совету.
если не ошибаюсь, он писал "В идеальных условиях", а у меня сошьет в любых)
да и с интерфейсом проблем не будет вообще, сплошные плюсы+++++
если не ошибаюсь, он писал "В идеальных условиях", а у меня сошьет в любых)
да и с интерфейсом проблем не будет вообще, сплошные плюсы+++++
Если ты так крут, то покажи хотябы пример, того что ты сделал . И не забудь про интерфейс, посмотрим, где сплошные +++++.
зря смеешся ведь я и вправду "крут" раз уж заказчик так и не объявился так и быть открою вам кусок кода вычисляющий угол поворота
ВАРНИНГ - обрезан кусок объявления в начале
- припуск на допустимый угол не введен!!!
...зря смеешся ведь я и вправду "крут"...
Не слишком ли ты высоко себя ставишь? <_<
просто не боюсь посмотреть проблеме в лицо, ни я ли единственный кто откликнулся написать эту программу?
а вообще с такими вопросами в приват. я прав?
неудевительно что все твои программы работают медленно, не пора ли перейти на полноценный язык программирования? на VB далеко не уедешь...
зря смеешся ведь я и вправду "крут" раз уж заказчик так и не объявился так и быть открою вам кусок кода вычисляющий угол поворота
ВАРНИНГ - обрезан кусок объявления в начале
- припуск на допустимый угол не введен!!!
Я не смеюсь, но читая твои посты, сложно это не делать. Если человек, который считает себя "крутым" программером, пишет такой код, то я сомневаюсь в твоей крутости <_<. Ты хоть сам имеешь представление, о чем этот код?
P.S. Если, допустим, мне понадобится ОС с такой же функциональностью как у существующих, ты тоже мне ее напишешь за 500$, смотря проблеме в лицо, или все-таки предложишь существующую?
Цитатая и вправду "крут"
Ты вообще в курсе что в этом куске кода просматривается жуткая неграмотность, во первых с изображениями не работают в одном потоке, во вторых перепад цвета по твоему алгоритму он не найдёт, контраст надо учитывать и в третих этот кусок нерабочий ))))) сафсем
А это уже наша недоработка Вот что бывает, когда забываешь/неуспеваешь/итд закрыть тему
Извините, но к разделам умников у нас относятся "Флейм" и "Личка"...