타겟에서 시각적 인식을 통해 4 중주의 착륙을 자동으로 수행하는 프로젝트를 진행하고 있습니다. 호그 기능을 통해 표적을 탐지하는 코드가 있습니다. 이제 아이디어는 이등변 삼각형을 찾고 그 방향을 결정할 수 있도록 선을 측정하는 것입니다. 나는 Hough를 시도했지만 성공할 수는 없습니다.Matlab에서 삼각형의 방향을 결정합니다.
대상이 제시 한
이며, 원 내부 이등변 삼각형이 구성된다. 그러나 당신이 더 나은 것을 생각할 수 있다면 저에게 알려주십시오.
불명확 한 점이 있으면 언제든지 문의하십시오. 대단히 감사합니다
업데이트 1 : 나는 이미지로 대상 만 다룰 때
@McMa의 생각은 잘 작동합니다.
clc; close all;
im=imread('target.bmp');
im=rgb2gray(im);
im2=imcrop(im,[467.51 385.51 148.98 61.98]);
im2=imcomplement(im2);
im2=imrotate(im2,0);
s=regionprops(im2,'Area','Centroid','Extrema','Orientation');
[imH,imW]=size(im2);
if imH-s(end).Centroid(2) < imH/2
state=1; % Upright
else
state=2; % Upside down
end
imshow(im2);hold on
plot(s(end).Centroid(1), s(end).Centroid(2), 'b*')
if s(end).Orientation>0
degrees=s(end).Orientation;
else
degrees=s(end).Orientation+180;
end
if (0<degrees)&&(degrees<89.99) && state==2
degrees=degrees+180;
elseif (90<degrees) && (degrees<179) && state==1
degrees=degrees+180;
end
fprintf('The orientation is %g degrees\n',degrees)
업데이트 2 :
가 지금은 또 다른 문제가 : 나는 카메라가 전체 대상 또는 단지 작은 원 + 삼각형을보고 여부를 어떻게 든 알 필요가이 코드입니다. 나는 방향을 계산하기 전에 이것을 필요로한다.많은 옵션을 사용해 보았습니다. 예를 들어, 원의 수를 계산하려고 했으므로 2 인 경우 큰 표적을, 1이 있으면 작은 표를 봅니다. 그러나 그들은 잘 감지되지 않습니다. 내가 감수성을 가지고 노는 경우에도, 그것은 강력한 방법이 될 수 없습니다.
이미지 : https://www.dropbox.com/s/7mbpna3xfquq5n7/P0016.bmp?dl=0 Classifer는 : https://www.dropbox.com/s/236vm3romw56983/Cascade1Matlab.xml?dl=0
im=imread('P0016.bmp');
detector = vision.CascadeObjectDetector('Cascade1Matlab.xml');
bbox = step(detector, im); % Detect the target.
detectedImg = insertObjectAnnotation(im, 'rectangle', bbox, 'target'); % Insert bounding boxes and return marked image.
imshow(detectedImg)
BW=rgb2gray(im);
BW=imcrop(BW,bbox(1,:) +[0 0 10 10]);
[imH,imW]=size(im);
centers = imfindcircles(im,[1 round(imH)]);
figure;hold on;
imshow(im);
plot(centers(:,1),centers(:,2),'r*','LineWidth',4)
나는 또한 오일러 번호와 같은 다른 방법으로 시도했지만 성공하지, 난 제대로 작동 아무것도 찾을 수 없습니다.
실제로 이것은 분명하지 않습니다. 성공하지 못했던 코드를 게시 할 수 있습니까? – Ratbert
이미지에 대한 링크를 게시하면 우리 중 하나가 귀하의 게시물을 편집하고 업로드합니다. – McMa
죄송합니다. 코드를 변경하지 않고 여러 번 시도한 후 갑자기 작동했습니다. 더 많은 문제가 있으면 다시 게시 할 것입니다. 감사합니다 모두 – Zynk