Author Topic: Как работает IF_PIXEL_IN, IF_PICTURE_IN, SCANPICTURE, SCANPXL?  (Read 7032 times)

0 Members and 1 Guest are viewing this topic.

АНТИКЛАН

  • Активный участник
  • ***
  • Posts: 111
    • View Profile
Всем привет!
Интересуют именно механизмы по которым происходит поиск. Если можно поподробнее кто знает :)

Луций

  • Активный участник
  • ***
  • Posts: 248
  • чат в телеге: https://t.me/klickermannchat
    • View Profile
    • Пишу скрипты на заказ:
Re: Как работает IF_PIXEL_IN, IF_PICTURE_IN, SCANPICTURE, SCANPXL?
« Reply #1 on: February 03, 2015, 12:17:37 AM »
с лева на право и с верху в низ

АНТИКЛАН

  • Активный участник
  • ***
  • Posts: 111
    • View Profile
Re: Как работает IF_PIXEL_IN, IF_PICTURE_IN, SCANPICTURE, SCANPXL?
« Reply #2 on: February 03, 2015, 12:32:47 AM »
с лева на право и с верху в низ

А еще подробнее? :D

АНТИКЛАН

  • Активный участник
  • ***
  • Posts: 111
    • View Profile
Re: Как работает IF_PIXEL_IN, IF_PICTURE_IN, SCANPICTURE, SCANPXL?
« Reply #3 on: February 03, 2015, 12:56:42 AM »
ещё подробнее специально, персонально и только для вас всё  очень-очень подробно описано в встроеной справке.
может вам, там нехватает Шрифта Брайля 8) 8) 8), ну для полного щястя?

Ну данных в справке достаточно только для того чтобы использовать функцию. Мне же интересно больше. Например как происходит сравнение образца с буфером анализа. Как функция узнает что нужно начать сравнивать. Может она ищет первый пиксель и потом выхватывает область равную размеру образца и потом сравнивает ее на основе контрольных сумм или как то по другому? Хочется знать вот это. :)

Луций

  • Активный участник
  • ***
  • Posts: 248
  • чат в телеге: https://t.me/klickermannchat
    • View Profile
    • Пишу скрипты на заказ:
Re: Как работает IF_PIXEL_IN, IF_PICTURE_IN, SCANPICTURE, SCANPXL?
« Reply #4 on: February 03, 2015, 05:21:28 AM »
думаю поиск картинок происходит так же, как поиск пикселей, только после нахождения первого пикселя картинки - ищется второй, если совпадает - третий и так далее, если не совпадает - идем дальше, если включен % совпадения, то некоторое количество ошибок игнорируется

Johnny

  • Создатель
  • Герой форума
  • *
  • Posts: 593
    • View Profile
Re: Как работает IF_PIXEL_IN, IF_PICTURE_IN, SCANPICTURE, SCANPXL?
« Reply #5 on: February 04, 2015, 03:19:10 PM »
ну в принципе как Луций написал, так оно и делается.
идея с контрольными суммами интересная, но в нее не впихивается ни здававаемая погрешность, ни возможность игнорировать фон.
способ крайне топорный, но изза высокой скорости, реализованной на всяких хитрых механизмах (иногда вызывающих интерес http://zhyk.ru/forum/showthread.php?t=495376) в принципе вполне приемлем как рабочий. суть в том чтобы минимизировать операции, учитывая что приходится раз за разом работать с тысячами пикселей. поэтому всякие подсчеты - это лишние милисекунды.

если кто-то придумает еще какие нибудь хитрые алгоритмы - буду рад почитать.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Как работает IF_PIXEL_IN, IF_PICTURE_IN, SCANPICTURE, SCANPXL?
« Reply #6 on: February 04, 2015, 03:34:54 PM »
если кто-то придумает еще какие нибудь хитрые алгоритмы - буду рад почитать.
Помимо каких? Мы же не знаем какие оптимизации уже применены.

А что если два варианта? Если параметры прозрачности/процента не заданы попробовать считать контрольную сумму области. Хотя наверное быстрей не будет. Для образца то считается 1 раз, а для области - много.

Читал ещё на Ai народ пытается загонять в строковую переменную и искать подстроки. Ещё в массив и искать вхождение. Но там встроенных средств мало. Для картинок вообще нет, только пользовательские библиотеки. Вот и мудрят.
« Last Edit: February 04, 2015, 03:41:12 PM by Vint »


АНТИКЛАН

  • Активный участник
  • ***
  • Posts: 111
    • View Profile
Re: Как работает IF_PIXEL_IN, IF_PICTURE_IN, SCANPICTURE, SCANPXL?
« Reply #7 on: February 10, 2015, 08:51:21 AM »
А что сравнивается? Значения цветов? Про взятие области равной образцу я правильно подумал?

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Как работает IF_PIXEL_IN, IF_PICTURE_IN, SCANPICTURE, SCANPXL?
« Reply #8 on: February 10, 2015, 12:05:16 PM »
А что сравнивается? Значения цветов?
Да.

Про взятие области равной образцу я правильно подумал?
Не совсем, сравнивается последовательно образцу. Да в пределах области, но в любой момент при несовпадении всё прервётся.


АНТИКЛАН

  • Активный участник
  • ***
  • Posts: 111
    • View Profile
Re: Как работает IF_PIXEL_IN, IF_PICTURE_IN, SCANPICTURE, SCANPXL?
« Reply #9 on: February 10, 2015, 01:50:47 PM »
Не совсем, сравнивается последовательно образцу. Да в пределах области, но в любой момент при несовпадении всё прервётся.

То есть он находит первый совпавший пиксель и начинает сравнивать последовательно дальше без локализации области для сравнения. Но так он легко же может выйти за пределы размеров образца а там уж точно будет отрицательный результат...


« Last Edit: April 15, 2018, 06:07:24 PM by АНТИКЛАН »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Как работает IF_PIXEL_IN, IF_PICTURE_IN, SCANPICTURE, SCANPXL?
« Reply #10 on: February 10, 2015, 02:18:13 PM »
Ну конечно построчно образцу. Ничто никуда не выходит.


АНТИКЛАН

  • Активный участник
  • ***
  • Posts: 111
    • View Profile
Re: Как работает IF_PIXEL_IN, IF_PICTURE_IN, SCANPICTURE, SCANPXL?
« Reply #11 on: February 10, 2015, 02:27:36 PM »
Ну конечно построчно образцу. Ничто никуда не выходит.

То есть найдя совпадение с первым пикселем образца выхватывает область равную по размеру образцу и уже в ней сравнивает пиксели так?

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Как работает IF_PIXEL_IN, IF_PICTURE_IN, SCANPICTURE, SCANPXL?
« Reply #12 on: February 10, 2015, 06:54:00 PM »
Не знаю так или не так. Но логично предположить:  зачем что-то "выхватывать". Расчёт позиции следующего сравниваемого пиксела производить на лету.
Берём пиксел образца. Берём пиксел экрана. Сравнили.
Если совпадает или количество допустимых несовпавших (%) не превысил...
Берём следующий пиксел в ряду и экрана нарастив X.
Если привысили ширину образца переходим на следующий ряд наращивая Y и там и там и возвращая начальные X.

Не понятно зачем ты это спрашиваешь? Чем это поможет?


АНТИКЛАН

  • Активный участник
  • ***
  • Posts: 111
    • View Profile
Re: Как работает IF_PIXEL_IN, IF_PICTURE_IN, SCANPICTURE, SCANPXL?
« Reply #13 on: February 10, 2015, 09:30:39 PM »
Не знаю так или не так. Но логично предположить:  зачем что-то "выхватывать". Расчёт позиции следующего сравниваемого пиксела производить на лету.
Берём пиксел образца. Берём пиксел экрана. Сравнили.
Если совпадает или количество допустимых несовпавших (%) не превысил...
Берём следующий пиксел в ряду и экрана нарастив X.
Если привысили ширину образца переходим на следующий ряд наращивая Y и там и там и возвращая начальные X.

Не понятно зачем ты это спрашиваешь? Чем это поможет?

Это нужно при создании образцов. Программа не всесильна и поэтому для более стабильной работы нужно облегчать работу ей.

Loorik

  • Зашел в гости
  • *
  • Posts: 15
    • View Profile
Re: Как работает IF_PIXEL_IN, IF_PICTURE_IN, SCANPICTURE, SCANPXL?
« Reply #14 on: February 10, 2015, 11:14:14 PM »
Это нужно при создании образцов. Программа не всесильна и поэтому для более стабильной работы нужно облегчать работу ей.
не нужно кликер может сам создать "оразец" стабильность зависит от конкретного применения. ну или прямоты рук... впрочем есть у меня на практике пример когда игра специально вносила изменения в изображение. на практике все решилось не через  IF_PICTURE_IN т.к получалось медленно.