Страница 1 из 1

Программа для выжигания/сверления изображения StippleGen

Добавлено: 17 июл 2013, 13:31
Алексс
по мотивам темы в eggbot набрел на чудеснейшую програмку StippleGen

рождает весьма и весьма оптимальные картины.
исходники на java (pde). можно чтонить подкрутить. первое что приходит на ум - распараллелить процесс вычисления на несколько ядер.
ну и подвисает иногда :)

тема для очумелых програмистов :geek:

Re: программа обработки изображения для выжигания/сверления

Добавлено: 17 июл 2013, 15:39
Nick
Алексс писал(а):первое что приходит на ум - распараллелить процесс вычисления на несколько ядер.
Что, так медленно работает?

Re: программа обработки изображения для выжигания/сверления

Добавлено: 17 июл 2013, 15:45
Алексс
ну все относительно конечно, план то не гнать.
но на моем рабочем core I7 2600 одна итерация считается около 2х секунд на дефолтных настройках.
там очень много математики... и вся на жабе :)

PS: итераций надо хотябы 100, тогда результат весьма и весьма!

Re: программа обработки изображения для выжигания/сверления

Добавлено: 17 июл 2013, 16:07
Nick
Да и правда не быстро идет... и это при 2000 точек...
Кстати, а что он подстраивает каждую итерацию? Зачем он диаграмму Вороного?

---------
А понял, они улучшают сетку точек смещая точку к центру ячейки диаграммы. А как тогда они делают первое разбиение?

Re: программа обработки изображения для выжигания/сверления

Добавлено: 17 июл 2013, 16:12
Сергей Саныч
Алексс писал(а):первое что приходит на ум - распараллелить процесс вычисления на несколько ядер
первое, что приходит - переписать на нормальном языке...

Re: программа обработки изображения для выжигания/сверления

Добавлено: 17 июл 2013, 16:16
Алексс
бьют на квадратики и берут яркость рандомной точки внутри.

Код: Выделить всё

int  i = 0;
  while (i < maxParticles)
  {

    float fx = lowBorderX +  random(hiBorderX - lowBorderX);
    float fy = lowBorderY +  random(hiBorderY - lowBorderY);

    float p = brightness(imgblur.pixels[ floor(fy)*imgblur.width + floor(fx) ])/255; 
    // OK to use simple floor_ rounding here, because  this is a one-time operation,
    // creating the initial distribution that will be iterated.

    if (invertImg)
    {
      p =  1 - p;
    }

//    if (random(.5) >= p ) {  
    if (.5 >= p ) {  
      Vec2D p1 = new Vec2D(fx, fy);
      particles[i] = p1;  
      i++;
    }
  } 
даже нихера не бьют. тупо рандомом :)

Re: программа обработки изображения для выжигания/сверления

Добавлено: 17 июл 2013, 16:43
Nick
Забыл выключить, дошло до 1114 итерации :)
Снимок-22.png (17051 просмотр) <a class='original' href='./download/file.php?id=16389&sid=2f4a2893a78739adc709339c5b810cfb&mode=view' target=_blank>Загрузить оригинал (330.26 КБ)</a>
Кстати Алексс, не пробовал "x" нажимать?:)
Алексс писал(а):даже нихера не бьют. тупо рандомом
Как же они тогда потом кучкуются в темных местах?
Serg-tmn писал(а):
Алексс писал(а):первое что приходит на ум - распараллелить процесс вычисления на несколько ядер
первое, что приходит - переписать на нормальном языке...
На питоне? :hehehe:

Re: программа обработки изображения для выжигания/сверления

Добавлено: 17 июл 2013, 17:02
Алексс
Nick писал(а):дошло до 1114 итерации
какая красотень получилась!
Nick писал(а):не пробовал "x" нажимать?
пробовал. не работает. по я вробовал в ручную задать 49000 точек. не дождался первой итерации :)
Nick писал(а):Как же они тогда потом кучкуются в темных местах?
первая итерация, как я понял сильно от фонаря и очень грубо находит точку, где что-то есть, строится вороная сетка, потом к каждой ячейке находится среднее значение яркости и ее центр яркости чтоли

Код: Выделить всё

              xSum += PicDensity * x;
              ySum += PicDensity * y; 
              dSum += PicDensity;
       }
      if (dSum > 0)
      {
        xSum /= dSum;
        ySum /= dSum;
      }
на полученных точках проделывается таже операция и тп.
это же надо было придумать !
переписать на нормальном языке
можно. но нужно ли ?
спецально обученные обезьяны уже забили всякие ништяки в либы для жабы. 10 минут подождал и готовый svg получил (если не зависло в процессе)...

Re: программа обработки изображения для выжигания/сверления

Добавлено: 17 июл 2013, 17:16
Nick
Алексс писал(а):пробовал. не работает. по я вробовал в ручную задать 49000 точек. не дождался первой итерации
а у меня сработало, уже час жду первую итерацию :).
Алексс писал(а):и ее центр яркости чтоли
а вот теперь понятнее :).

Re: программа обработки изображения для выжигания/сверления

Добавлено: 17 июл 2013, 17:26
Алексс
я понял. нужно чаще употреблять слова "типа", "чтоли", "опа", "наверное".
ближе к народу и проясняют суть дела :)

Re: программа обработки изображения для выжигания/сверления

Добавлено: 17 июл 2013, 22:11
Nick
Есть первая итерация :cheesy:
17000 секунд, это около 5 часов :)

Re: программа обработки изображения для выжигания/сверления

Добавлено: 17 июл 2013, 23:02
Ворон226
А первый вариант-то получше будет ;)

Re: Программа для выжигания/сверления изображения StippleGen

Добавлено: 18 июл 2013, 00:26
michael-yurov
Не хватило разрешения монитора для окружностей менее 1 пикселя, из за этого они слились в черное.

Re: Программа для выжигания/сверления изображения StippleGen

Добавлено: 27 июл 2015, 13:56
lexalex83
Алексс писал(а):бьют на квадратики и берут яркость рандомной точки внутри.
По-моему не на квадратики а на диаграмму Вороного. что то не до конца понимаю алгоритм. А еще кто нибудь знает программы подобные этой?

Re: Программа для выжигания/сверления изображения StippleGen

Добавлено: 07 фев 2017, 09:00
GipsyRaven
Подскажите пожалуйста, как подготавливали gcode сверловки и скармливали его LinuxCNC