Stroke pattern analysis and synthesis Pascal Barla1, Simon Breslav2, Joëlle Thollot1, François Sillion1, and Lee Markosian2
Abstract User-specified reference 패턴을 기반으로 자동적으로 stroke 패턴을 생성하는 합성기술을 제안 벡터 기반 패턴 텍스처 합성의 확장 추출된 의미 있는 패턴의 속성을 분석 합성 알고리즘은 stroke 집합의 유사성에 기반을 둠 지각구조와 연관된 인간 시각 연구결과를 사용 입력된 패턴에서 효과적으로 합성된 패턴을 생성 1D 경로, 2D 지역을 채울 때 사용 될 수 있음
Introduction Non-photorealistic 렌더링에서 Stroke기반 이미지는 특히 중요한 부분임 예술가 각각의 개인적인 스타일을 알고리즘으로 표현하는 것은 쉽지 않음 자동화와 풍부한 표현력 사이에서 절충이 필요
Introduction (cont’d) 합성은 이러한 문제에 접근하는 최선의 방법 Pixel 기반의 텍스처 합성은 stroke 패턴에 부적절 Stroke 패턴은 pixel과는 달리 개별적으로 인식됨 사용자가 입력하는 stroke 패턴을 벡터 기반의 서술(description)로 사용하는 것을 제안 Pixel 기반보다 큰 표현력과 고차원적 분석이 가능함 Stroke geometry는 속성을 가지는 버텍스들의 연결로 명시적으로 표현됨
Introduction (cont’d) 거의 일정한 분포를 가지는 많은 종류의 stroke패턴 지원 stippling, hatching, brush strokes, small figures 알고리즘은 두 가지 단계로 구성됨 Stroke 패턴을 분석 분석된 결과를 합성
Previous Work – Stroke 합성 Stipple drawing Pen and ink representations Engravings Painterly rendering
Previous Work – 텍스처 합성 Parametric method Non-parametric method 텍스처를 확률적으로 분석하여 파라미터 집합을 생성 텍스처 합성에 파라미터 집합사용 Non-parametric method 인접 정보들을 비교하여 텍스처를 합성 Ex) Pixel기반 합성, 벡터기반 합성
Contributions 즉시 사용할 수 있는 벡터 데이터를 추출하는 분석방법 입력 stroke에 적용된 생물지각기준을 사용 텍스처합성과 유사하지만 벡터 데이터에 의한 합성방법 지각력기반 이웃매칭 알고리즘을 제안 연결성이 유사하지 않아도 비교를 허용
Analysis 참조 stroke 패턴을 분석하여 의미 있는 요소를 추출 요소(element) 같은 크기로 느껴지는 요소들이 거의 일정한 분포를 이루고 있는 것을 대상으로 함 세가지 단계로 이루어짐 각각의 입력된 stroke에서 요소들을 fitting함 요소들을 생물지각기준을 사용하여 반복적으로 합침 속성을 알아내기 위해 분포에 따라 요소를 연결
Element Fitting 요소는 중심과 두 개의 축으로 정의 두 가지 fitting 방법이 있음 Stroke의 뼈대만 고려 사용자의 제스처 입력 요소를 뼈대 위의 점에 fitting Stroke의 스타일 고려 Thickness, fading, tapering 등 요소를 stroke의 외곽선에 fitting
Element Fitting (cont’d) 요소 E는 OBB(Oriented Bounding Box)를 통해 구성됨 Point들의 covariance matrix를 구하여 eigenvector A와 B를 구함 각 점들을 축에 프로젝트시켜 요소의 크기와 중점을 결정
Element Clustering Bounding box로 표현된 각각의 stroke를 합쳐줌 합쳐질 수 있는 조건 적은 수의 개별적인 stroke로 그려진 작은 물체(ex. 꽃) 합쳐질 수 있는 조건 Proximity constraint(꽃 같은 물체) Continuation constraint(해칭 요소)
Proximity Measure : The directed hausdorff distance 가깝거나 포함된 요소들은 합쳐짐
Continuation measure 거의 collinear인 요소들은 합쳐짐 물체간의 거리 확인
Element Distribution 요소들의 분포 특징을 나타내는 연결정보를 생성 1D는 인접요소를 연결하여 생성 2D는 delaunay triangulation으로 생성 사용자의 입력은 거의 균등하면 됨 지역적인 차이를 측정하기 위해 shift 벡터를 사용 요소의 중심과 주위 이웃요소의 중심 간의 변위 나중에 합성패턴에 변화를 주기 위해 사용
Synthesis 패턴의 중심에 있는 요소에서 시작 이전 합성된 요소와 이웃과의 비교를 통해 확장 요소들의 위치는 정렬되어있지 않기 때문에 이웃과 비교하는 것이 유용함 이웃과의 비교는 모든 파라미터를 사용 중점, 길이, 넓이, 색깔
Synthesis (cont’d)
Synthesizing One Element w(E) : E의 이웃 요소들의 집합 Stroke 합성의 이웃 비교가 어려운 이유 이웃의 개수와 위치가 다양함 요소는 pixel 보다 속성이 복잡함 두 이웃간의 유사도 비교는 2단계로 실시 두 개의 이웃 집합에서 비슷한 요소들을 찾음 모든 참조 이웃에 대해 생물지각측정 테스트
Determination of Relevant Elements 유사한 요소를 결정하기 위해 요소 간의 위치만 고려
Element Neighborhood Matching
Perceptual Thresholds
Synthesizing a Pattern 먼저 seed라고 불리는 요소 위치의 균일한 분포를 만듦 Seed는 이웃과 연결되어있음 Lloyd’s method 사용
Distribute Seeds using Lloyd’s Method Seed의 voronoi diagram을 생성 Voronoi region의 중심으로 seed를 이동 2,3 단계 반복
Modified Element Synthesis Algorithm 모든 이웃 요소를 알고 있지 않으므로 알고리즘을 수정 Error 값을 알고 있는 이웃요소의 개수로 정규화 시킴
Adding Variation 지금까지 방법은 참조 pattern과 아주 비슷한 pattern을 생성 후처리를 통해 어느 정도의 변화를 줌 합성될 요소의 방향과 비슷한 방향의 요소를 찾아 파라미터를 가져옴 참조 pattern과 많이 다르지 않게 해줌
Adding Variation (con’t) 사용자의 인풋이 균일하지 않더라도 합성결과는 균일함 요소 위치의 분포를 변화시키는 휴리스틱한 방법 제안 k개 이상의 이웃을 가진 에 대해서 Reference shift vector 를 사용하여 이동(translate)시켜 줌 , : 이웃의 넓이 n : 의 이웃의 개수 1D에서는 k=2, 2D에서는 k=4를 사용
Result 1D
Result 1D(con’t)
Result 2D
Result 2D (cont’d) 변화를 추가시킨 결과
Discussion and Future Work - Analysis 요소의 표현이 너무 간단하여 긴 곡선은 추출하기 어려움 벽돌 벽과 같은 조립된 패턴에 사용할 수 없음 요소모델을 수정하고 다중분석을 추가해야 함
Discussion and Future Work - Synthesis 거의 균일한 분포를 Lloyd’s method를 사용해 생성 패턴의 밀도 변화를 고려하여 균일하지 않은 패턴도 가능하게 해야 함 요소의 중심으로만 분포시키는 것이 아닌 전체 모양을 고려해야 함 적절한 이웃을 찾지 못하는 경우가 생길 수 있으나 Lloyd’s method가 방지함 합성하는 동안 입력 stroke의 속성을 고려하도록 함
Discussion and Future Work - Extension to Synthesis on Surfaces 표면 위에 합성할 계획 모든 시점에서 같은 스타일을 유지하기 위해 stroke는 일정한 크기를 가져야 함 LOD mechanism이 필요 많은 연구가 필요함
Conclusions 새로운 벡터 기반 stroke 패턴의 분석과 합성을 제안 지각 구조를 사용해 참조 패턴을 해석하고 비슷하게 합성 합성 알고리즘은 텍스처 합성에서 영감을 받았음 합성된 패턴이 참조 패턴과 매우 비슷하고 사용자는 패턴에 변화를 줄 수 있음