Извлечение синусоиды из изображения

#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 для каждой строки, двигаясь от нижней части изображения и вверх, создавая вектор из строки первого встреченного «желтого» пикселя и разрывая вложенный цикл.