2015-11-15 3 views
0

Мне нужно найти похожие углы на изображении (например: 4 угла прямоугольника, одинаковые углы, только другая ориентация?).Найти похожие углы в matlab

enter image description here

У меня есть этот код:

% read the image into MATLAB and convert it to grayscale 
    I = imread('s2.jpg'); 
    Igray = rgb2gray(I); 
    figure, imshow(I); 
    % We can see that the image is noisy. We will clean it up with a few 
    % morphological operations 
    Ibw = im2bw(Igray,graythresh(Igray)); 
    se = strel('line',3,90); 
    cleanI = imdilate(~Ibw,se); 
    figure, imshow(cleanI); 
    % Perform a Hough Transform on the image 
    % The Hough Transform identifies lines in an image 
    [H,theta,rho] = hough(cleanI); 
    peaks = houghpeaks(H,10); 
    lines = houghlines(Ibw,theta,rho,peaks); 
    figure, imshow(cleanI) 
    % Highlight (by changing color) the lines found by MATLAB 
    hold on 

После выполнения этого кода преобразовать свою отправную изображение в бинарное изображение с:

binary = im2bw(I); 

после этого я получаю продукт эти 2 бинарных изображения, и я думаю, что получаю углы.

product = binary .* cleanI; 

теперь я imfuse это черно-белое изображение исходной картинке и получите это:

enter image description here

Я не знаю, что нужно сделать, чтобы получить только те 4 угла!

+1

Добро пожаловать в SO. Возможно, вы можете опубликовать изображение (или ссылку на изображение, которое мы можем редактировать, потому что вы не можете добавлять изображения еще), поэтому мы можем более легко понять, что вы пытаетесь сделать. Кроме того, добавьте код для определения угла, чтобы люди видели, что вы пробовали. – lhcgeneva

+0

[ссылка] (http://www.soil-net.com/album/Equipment/slides/Mobile%20Phone.jpg) Этот снимок, например, я хочу найти углы рабочего стола. –

ответ

0

Ok второй раз. Ниже кода, который в конечном итоге не выполняет работу, но может помочь. Edge определяет контуры, и с regionprops вы получаете характеристику каждого идентифицированного элемента. Как только вы узнаете, какие характеристики у вашего желаемого объекта, вы можете отфильтровать его и запечатлеть. Я прошел через Районы в форме. Ареа и 6-й по величине был тот, который ты искал. Если вы объедините область с некоторыми другими характеристиками, вы можете получить тот, который вы хотите. Как я сказал, не идеальный и окончательный, но, возможно, старт ...

clear all 
close all 

source = imread('Mobile Phone.jpg'); 
im  = rgb2gray(source); 
bw = edge(im ,'canny',[],sqrt(2)); 
shapedata=regionprops (bwlabel(bw,8),'all'); 

%index = find([shapedata.Area]== max([shapedata.Area])); 
index = 213; 

data = shapedata(index).PixelList; 

figure 
imshow(im) 
hold on 
plot(data(:,1),data(:,2),'ro'); 
+0

Спасибо за помощь, я попробую это решение, когда найду время для работы над этим. Я сообщу вам .. –

+0

Я изменил свой примерный рисунок и мой подход, поэтому я был бы признателен, если бы вы могли взять один подробнее рассмотрите проблему. –

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