2014-08-29 2 views
0

Прежде всего, я использую javascript и KineticJS. У меня есть изображение xray (так что вы можете представить, какие цвета его используют), а изображение - изображение профиля черепа, например these. У меня есть некоторые строки, которые формируются после того, как пользователи нажимают на определенные точки, некоторые из которых пересекаются. В паре из них мне нужно знать, когда биссектриса угла, образованного двумя пересекающимися линиями, пересекается с определенной частью черепа, которая начинается, когда начинается кость (которая более серая, я думаю). Мой вопрос - это хороший способ проверить это? Я имею в виду Suppoze, я беру каждую точку на моей линии биссектрисы и проверяю цвет пикселей? Как я могу быть уверен, так как xrays могут отличаться (яркость пленки и т. Д.). Не могли бы вы дать мне предложение или привести меня куда-нибудь?Найти, где биссектриса интересует определенную область изображения

ответ

0

Ваш вопрос немного запутан.

Если 2 линии пересекаются, то создаются 4 угла и, следовательно, создаются 4 линии разборки.

Во всяком случае, вот как начать ...

После того, как вы определяете, какие точки интересны, вы можете использовать context.getImageData для извлечения значения RGBA пикселов в этих точках.

Затем преобразуйте каждый цвет пикселя rgba в формат hsl. Формат Hsl разделяет оттенок, насыщенность & Легкость цвета.

Кости & Зубы кажутся светлее, поэтому вы можете сравнить значения легкости, чтобы обнаружить кости/зубы.

[Дополнение: Расчет точек вдоль биссектрисы]

Если вы знаете точку пересечения 2-х линий [х, у], и вы знаете угол вы заинтересованы в (radianAngle), то можно вычислить точку на расстоянии (D) вдоль линии, которая делит пополам угол, что, как это:

var lineX = x + d * Math.cos(radianAngle); 

var lineY = y + d * Math.sin(radianAngle); 

Затем вы можете использовать data из getImageData, чтобы принести цвет Rgba в точке [LinEx, lineY]. Затем конвертируйте в формат hsl и используйте значение Light, чтобы определить, находится ли [lineX, lineY] над более светлой костью.

+0

Правда, он образует 4 угла, но я знаю, как получить тот, который я хочу. Я просто не знаю, как рисовать бисетрикс и как знать, когда точка находится в конкретной области, которую я хочу. – Apostolos

+1

Я добавил к своему ответу, чтобы показать, как вычислять точки на бисетриксе. Мой ответ уже объясняет, как тестировать более легкие области кости вашего изображения. Удачи с вашим проектом! – markE

+0

Моя проблема заключается в том, что я не могу понять, как найти второй пункт для рисования линии деления пополам. Для того, чтобы нарисовать линию, у меня есть точка (пересечение двух линий, и мне нужно найти другую). Моя геометрия очень ржавая. – Apostolos

Смежные вопросы