회선 검출
Line detection이미지 처리에서 선 검출은 n개의 엣지 포인트의 컬렉션을 취하여 이러한 엣지 포인트가 [1]놓여 있는 모든 선을 찾는 알고리즘입니다.가장 일반적인 라인 디텍터는 Hough 변환 및 컨볼루션 기반 [2]기술입니다.
하프 변환
Hough[3] 변환을 사용하여 라인을 검출할 수 있으며 출력은 이미지 내 라인에 대한 파라미터 설명(예: = r cos(sin) + c sin(sin))[1]입니다.행 및 열 기반 화상공간에 선이 있으면 θ, 원점에서 선에 수직을 따르는 거리, θ, 원점에서 선까지의 수직 투영 각도를 정의행 축에서 시계 방향으로 도수로 측정할 수 있다.따라서 영상의 선은 Hough [4]공간의 점에 해당합니다.따라서 선에 대한 Hough 공간에는 이러한 2차원 and와 ,가 있으며 선은 이들 파라미터의 고유한 세트에 대응하는 단일 포인트로 표시됩니다.그런 다음 사용하는 일련의 값 " 및 "을 선택하면 Hough 변환을 구현할 수 있습니다.각 픽셀에 대해서)r,c그림에서 θ의 각 값에 대해 r cos(cos) + c sin(csin)을 계산하여 (cos, θ) 배열의 적절한 위치에 배치합니다.마지막에 배열에서 값이 가장 높은 (ρ, ))의 값이 이미지에서 가장 강한 라인에 대응합니다.
컨볼루션 기반 기술
컨볼루션 베이스의 기술에서 라인 검출 오퍼레이터는 특정 폭 n 및 θ 방향의 라인의 존재를 검출하도록 조정된 컨볼루션 마스크로 구성된다.다음은 이미지에서 수평, 수직, 경사(+45도) 및 경사(-45도) 선을 감지하기 위한 4개의 회전 마스크입니다.
a) 수평 마스크(R1)
−1 | −1 | −1 |
2 | 2 | 2 |
−1 | −1 | −1 |
(b) 수직(R3)
−1 | 2 | −1 |
−1 | 2 | −1 |
−1 | 2 | −1 |
(C) 경사(+45도)(R2)
−1 | −1 | 2 |
−1 | 2 | −1 |
2 | −1 | −1 |
(d) 경사(-45도)(R4)
2 | −1 | −1 |
−1 | 2 | −1 |
−1 | −1 | 2 |
실제로 마스크는 이미지 위에 실행되며 다음 방정식으로 응답이 결합됩니다.
R(x, y) = max(R1(x, y), R2(x, y), R3(x, y), R4(x, y))
R(x, y)> T일 경우 중단됩니다.
아래에서 볼 수 있듯이 마스크가 영상(수평선)에 중첩되고 일치하는 값을 곱한 다음 이 모든 결과를 합하면 출력이 (컨볼루션된 영상)이 됩니다.예를 들어 (-1)+(-1)(0)+(-1)(0)+(2)(1)+(2)(1)+(-1)(1)+(-1)+(-1)(0)=2번째 행의 화소,[1] 수평선 왼쪽에서 시작하는 (콘볼루션 화상)의 두 번째 열이다.페이지 82
예
수평선 | 합성 이미지 | |||||||||||
0 | 0 | 0 | 0 | - | - | - | - | |||||
1 | 1 | 1 | 1 | = | - | 6 | 6 | - | ||||
마스크 | * | 0 | 0 | 0 | 0 | - | - | - | - | |||
−1 | −1 | −1 | ||||||||||
2 | 2 | 2 | ||||||||||
−1 | −1 | −1 | ||||||||||
* | 세로줄 | 합성 이미지 | ||||||||||
0 | 0 | 1 | 0 | - | - | - | - | |||||
0 | 0 | 1 | 0 | = | - | 0 | 0 | - | ||||
0 | 0 | 1 | 0 | - | - | - | - |
위의 마스크는 어두운 배경에 대한 밝은 선에 맞게 조정되어 밝은 [5]배경에 대한 어두운 선에 대해 큰 부정적인 반응을 보입니다.
코드 예시
코드는 Matlab을 사용하여 이미지에서 수직선만 감지하는 데 사용되었으며 결과는 다음과 같습니다.원본 이미지는 맨 위에 있고 결과는 그 아래에 있습니다.오른쪽 그림과 같이 세로선만 검출되었습니다.
분명한 모든. cl % 이 MATLAB 프로그램은 이미지에서 수직선만 감지합니다. 건물 = 읽다('building.jpg'); % 그러면 이미지 빌드가 업로드 됩니다. 할 수 있다 = 5; %는 소음 또는 가장자리를 설명하기 위한 각도의 공차를 정의합니다. 수직처럼 보일 수 있지만 각도가 계산될 때 비율 아닌 것처럼 보일 수 있습니다(%) [~, 각] = 흐릿하다(건물); 나가. = (각 >= 180 - 할 수 있다 각 <=> -180 + 할 수 있다); %이 부분은 라인을 필터링합니다. out_필터 = 열려 있다(나가., 50); 수치, 표시하다(건물), 직함('오리지널 이미지'); 수치, 표시하다(out_필터), 직함('검출된 회선');
「 」를 참조해 주세요.
레퍼런스
- ^ a b c Umbaugh, Scott E. (2011). Digital image processing and analysis : human and computer vision applications with CVIPtools (2nd ed.). Boca Raton, FL: CRC Press. ISBN 9781439802052. OCLC 491888664.
- ^ "Hough transform - MATLAB hough". www.mathworks.com. Retrieved 2018-04-23.
- ^ "Line Detection by Hough transformation" (PDF).
- ^ Li, Fei‐Fei (10 October 2011). "Finding lines: from detection to model fitting" (PDF). Stanford Vision Lab.
- ^ a b "Line Detection". homepages.inf.ed.ac.uk. Retrieved 2018-04-23.