Есть ли какая-либо дополнительная информация об изображениях, которую вы можете использовать, чтобы помочь?
Как изображения начинаются белыми, затем черными и остаются черными? или любой пиксель может быть белым или черным, и тот факт, что любой из них является белым или черным, ничего не говорит вам о других?
Если какой-либо пиксель может быть белым или черным независимо от других пикселей, то я не вижу, как вы можете сделать это намного лучше, чем проверять каждый пиксель в цикле, пока не найдете первый небелой ...
Если вы знаете, что если пятый пиксель слева - белый, то 0-4, безусловно, также белый, тогда вы можете проверить меньшее количество пикселей вместо этого, используя какой-то вид модифицированного поиска двоичного типа (так как вы можете пропустить проверку 0-4 в этом случае и просто отметьте, скажем, 5, затем 10, а если 5 - белый, а 10 - черный, вы знаете, что точка находится где-то между 5-10, поэтому вы можете разделить разницу и проверить 7 и т. Д., Пока не найдете точка, в которой они меняются.)
Я думаю, что здесь вы могли бы найти компромисс между скоростью и точностью. Наиболее точный способ - разрезать каждый столбец и строку, начиная с конечностей, проверяя каждый пиксель. Как только вы нашли попадание в колонне, вы нашли ребро с одной стороны. Это можно сделать параллельно, поскольку каждая проверка независима. Вы могли бы ускорить это, как вы сказали, проверяя только каждый n-й пиксель, но это, скорее всего, иногда будет обрезкой, особенно при таком большом наборе данных. это может или не может быть приемлемым. Вы можете улучшить это, проверив область, в которой вы нашли совпадение, чтобы убедиться, что совпадение является точным. Таким образом, если вы проверяете каждый 3-й пиксель и обнаруживаете попадание в пикселе 15, тогда отметьте 14, чтобы увидеть, является ли оно попаданием (и 13, если 14 равно). используя это, вы можете избежать чеков.