У меня есть изображение, как показано ниже, и я хочу определить линию изображения, используя траншею PET пакета. Мне нужна помощь, чтобы понять, как получить линию от этого изображения.Hough transform R PET-пакет, обнаруживающий линию
library("PET", lib.loc="~/R/win-library/3.1")
library("raster", lib.loc="~/R/win-library/3.1")
p=matrix(diag(100), 100)
library(raster)
r <- raster(p)
plot(r)
abc=hough(p)
viewData(list(p, abc$hData), list("Phantom", "Hough transformed phantom"))
Я применил преобразование hough, как указано выше. Исходное изображение и изображение, которое я получаю после запуска последней строки, приведены ниже
любые входные данные о том, как получить координаты линии (от исходного изображения)? Я понимаю, что белая точка со второй правой правой панели изображает линию. Эта линия построена с использованием системы Polar Cordinate. Но я не знаю, как использовать второе изображение, чтобы получить координаты исходной линии
Я посмотрел на документацию ПЭТ пакета, но было трудно понять :(Я побежал их пример кода, но я не понял, это
============================================================================================================ =============================
Я последовал за советы, данные в комментариях пользователя Ниццей и обновил свой код, как показано ниже
library("PET", lib.loc="~/R/win-library/3.1")
library("raster", lib.loc="~/R/win-library/3.1")
#p=matrix(diag(1000), 1000)
p=matrix(rep(0,10000), 100, 100)
# for (i in 1:100)
# {p[i,100-i+1]=1
# }
for (i in 1:100)
{p[i,50]=1
}
# library(raster)
# r <- raster(p)
# plot(r)
abc=hough(p)
maxPoint<-which(abc$hData==max(abc$hData),arr.ind=T)
library(pracma)
a<-cot(maxPoint[1,"row"]*pi/180)
b<-maxPoint[1,"col"]/sin(maxPoint[1,"row"]*pi/180)
a
b
par(pty="s")
par(mfrow=c(1,2))
#image(r, main="org")
image(p,main="original")
image(abc$hData, main="Houghmatrix")
Являются ли новые значения a и b правильными? Я чувствую, что b должно быть 50 (перпендикулярное расстояние исходной линии от (0,0)). Что я делаю не так?
Я также хотел бы знать, почему abc $ hData имеет 181 строку и 143 столбца. Я могу представить, что 181 ряд имеет какое-то отношение к PI радианам - 180 градусов. Но у меня нет никаких подсказок о 143 столбцах ...
============================================================================= ==================================== 0 0 что я получаю странные ответы. Я получаю a = -57.6 и b = 1786.12.
p=matrix(rep(0,10000), 100, 100)
for (i in 1:100)
{p[80,i]=1
}
я не видел каких-либо образцов, где они были перерабатывающие R матричных объектов. Почему бы вам не попробовать использовать средства чтения для форматов изображений. –
Я заглянул в документацию пакета PET и посмотрел на страницу 4/hough part. В нем говорится, что входной параметр oData (matrix) - это матрица, содержащая изображение (для преобразования Hough). – user2543622