#matlab #image-processing #cross-correlation
#matlab #обработка изображений #взаимная корреляция
Вопрос:
У меня есть это изображение:
Интерфейс между серой областью в нижней части и зашумленной частью в середине образует несколько синусоидальную кривую. Моя проблема в том, как мне извлечь вектор той же длины, что и ширина изображения, описывающего синусоидальную кривую.
До сих пор я пытался перенести каждый столбец изображения в следующий столбец и использовать cumsum для построения кривой, но пока мне это не удалось.
Есть еще идеи?
Ответ №1:
Я не знаю Matlab, но это может дать вам представление и должно быть довольно легко перевести — просто сделано в терминале с помощью ImageMagick:
magick sinusoid.png -fill magenta -fuzz 5% -opaque "gray(128)" -fill yellow opaque magenta result.png
Это говорит… «Заполните пурпурным все, что находится в пределах 5% от среднего серого (128), а затем заполните желтым все, что не является пурпурным».
Конечно, вы также можете выполнить морфологическое закрытие отверстий и обнаружение краев. Или сканируйте вверх от нижней части каждого столбца, пока не увидите желтый.
Комментарии:
1. Да, я в конечном итоге использовал этот подход. Затем я сделал цикл for над каждым столбцом, содержащим цикл for для каждой строки, двигаясь от нижней части изображения и вверх, создавая вектор из строки первого встреченного «желтого» пикселя и разрывая вложенный цикл.