Для проекта требуется найти расстояние между линиями на изображении. Метод, о котором я думал, состоял в том, чтобы преобразовать изображение в двоичное изображение и подсчитать количество белых пикселей на черном фоне в каждой строке. Я прикрепил свой код, и он хорошо работает при условии, что линия совершенно прямая.Подсчет количества пикселей каждой строки в изображении
Кстати, это образец изображения, который будет проанализирован. Я планирую превратить в бинарный/запустить алгоритм определения линии, чтобы найти границы двух зеленых полос в проводе, поскольку расстояние между ними вызывает беспокойство.
im = imread('http://i.imgur.com/lc8ESac.png'); %// Read image
imBinary = double(im2bw(im)); %// Just in case - Convert to binary,
%// then make double for sum
histogram = sum(imBinary,2); %// Compute row-wise histograms
stem(1:size(imBinary,1), histogram); %// Plot this histogram
xlabel('Row number');
ylabel('White pixel count');
grid;
diffs = diff([0; histogram]);
threshold = 100; %// Define threshold here
rows = find(diffs >= threshold);
Этот код возвращает гистограмму и расстояние между вершинами указывает расстояние между линиями.
Чтобы исправить проблему изогнутых линий, я думаю об использовании метода, который анализирует столбцы изображения (например, 100 пикселей), затем он циклически перемещается по всему изображению (колонка 0-100, затем 101- 200 до ширины изображения).
У меня псевдокод здесь:
for (loop through rows)
for (loop for coloumns)
count pixels at p(row, col)
end loop for columns
column counter = column counter - 1
if column counter <= 0 then save the number of pixels counter and set column counter = 10
end row loop
Однако, будучи ChemE майору, кодирование не является моей сильной стороной, и я бороться очень петлями.
Я просто хочу учесть вышеупомянутый код внутри этого цикла, чтобы он мог сломать изогнутую линию на множество псевдо прямых, чтобы иметь возможность вычислять «среднее» или серию дискретных расстояний между линиями.
Большое спасибо!
Хм :) Я знал, что узнал этот образ и это изображение откуда-то! Теперь я посмотрю на вашу логику, и я предложу что-то, если я думаю, что это сработает. – rayryeng
+1 для исполняемого кода! Редкость в 'Stackoverflow'. – Divakar
@rayryeng спасибо! вы действительно удивительны, и я очень ценю вашу помощь, но, к сожалению, кодирование - это не одна из моих сильных сторон, и ее легко сказать, что я хочу сделать, но написать код и синтаксис - это совсем другая игра с мячом для меня:/ – user3788581