천객만래 [千客萬來] (It has an interminable succession of visitors)

'zhang suen'에 해당되는 글 2건

  1. 2016.07.04 [영역처리] Thinning (세선화) --- ③
  2. 2016.07.04 [영역처리] Thinning (세선화) --- ②

[영역처리] Thinning (세선화) --- ③


2003.09.01


위의 그림은 알고리즘을 적용한 실험결과.


Zhang Suen 세선화 알고리즘의 주요부분임.


소스코드(주요부분) 

   // mark and delete pixels. 
   While Again = 1 Do 
   Begin 
       again := 0; 
       // Second sub-iteration. 
       For row := 1 To sy -2 Do 
           For col := 1 To sx -2 Do 
           Begin 
               If tTgt[col, row] <> 1 Then 
                   Continue; 
               k := nays8(tTgt, col, row); 
               If ( (k >= 2) And (k <= 6) ) And (Connectivity(tTgt, col, row) = 1) Then 
               Begin 
                   If ( tTgt[col+1, row] * tTgt[col, row-1] * tTgt[col-1, row] = 0) And 
                     ( tTgt[col, row-1] * tTgt[col, row+1] * tTgt[col-1, row] = 0) Then 
                   Begin 
                       localTgt[col, row] := 1; 
                       again := 1; 
                   End; 
                   // of if ..else. 
               End // End of if tTgt. 
           End; // Of For col. 
       // End of For row. 

       // delete pixel. 
       DeletePixel(tTgt, localTgt); 
       If Again = 0 Then 
           Break; 

       // First sub-iteration. 
       For row := 1 To sy -2 Do 
           For col := 1 To sx -2 Do 
           Begin 
               If tTgt[col, row] <> 1 Then 
                   Continue; 
               k := nays8(tTgt, col, row); 
               If ( (k >= 2) And (k <= 6) ) And (Connectivity(tTgt, col, row) = 1) Then 
               Begin 
                   If ( tTgt[col, row-1] * tTgt[col+1, row] * tTgt[col, row+1] = 0) And 
                     ( tTgt[col+1, row] * tTgt[col, row+1] * tTgt[col-1, row] = 0) Then 
                   Begin 
                       localTgt[col, row] := 1; 
                       again := 1; 
                   End; 
                   // of if ..else. 
               End // End of if tTgt. 
           End; // Of For col. 
       // End of For row. 

       // delete pixel. 
       deletePixel(tTgt, localTgt); 
   End; // of While Again. 





Posted by SB패밀리

[영역처리] Thinning (세선화) --- ②


2003.05.27



[영역처리] Thinning (세선화) --- ② 2003/5/27

영상처리 알고리즘에서 세선화는 대상 물체를 선 폭을 섬세하게 하여 한 픽셀의 두께를 갖는 중심선으로 추출하는 조작을 말한다.

이 세선화의 기본적인 세선화 알고리즘은 기본적으로 순차적 처리(sequential processing) 방법과 병렬적 처리(parallel processing) 방법으로 구분할 수 있다.  

⇒ 순차적 처리 방법: 현재의 처리 결과가 과거의 처리값에 영향을 받으며 미래의 처리 결과에도 영향을 미치는 것으로 이 방법에서는 대상 화상만 있으면 처리가 가능하다.한다. 

⇒ 병렬적 처리 방법: 현재의 처리 결과가 과거나 미래의 처리 결과에 전혀 영향 을 받거나 미치지 않는 것으로써 추가적으로 대상 화상 크기만큼의 버퍼가 필요하다. 현재의 관심 화소(pixel)에 대한 처리 결과를 버퍼에 저장하는 방식으로, 전체 화상에 대한 한 차례의 처리가 모두 끝난 다음 에 버퍼에 저장되어 있는 처리 결과를 원래의 대상 화상 위에 덮어 쓰게 된다. 

Zhang Suen 알고리즘

Zhang Suen 세선화 알고리즘은 1984년에 처음으로 발표한 것으로 병렬적 처리(Parallel Processing)방법의 하나로써 기본적인 알고리즘은 다음과 같다. 

1루프>처리대상인 검은 픽셀 I(i,j)에 대해서 다음과 같은 조건을 만족하면 지운다. 

① 픽셀 I(i,j)에 대해서 그 주위의 픽셀들의 connectivity가 1이고, 
② 픽셀 I(i,j)에 대해서 그 주위의 픽셀들 중 검은 픽셀이 적어도 2개에서 6개사이에 있어야 하며, 
③ 적어도 픽셀 I(i,j+1), I(i-1,j), I(i,j-1)중의 하나는 배경 픽셀 즉 255이어야 하며, 
④ 적어도 픽셀 I(i-1,j), I(i+1,j), I(i,j-1)중의 하나는 배경 픽셀 즉 255이어야 한다. 
⑤ 조건에 맞으면 픽셀을 제거한다. 

2루프>처리대상인 검은 픽셀 I(i,j)에 대해서 다음과 같은 조건을 만족하면 지운다. 

① 픽셀 I(i,j)에 대해서 그 주위의 픽셀들의 connectivity가 1이고, 
② 픽셀 I(i,j)에 대해서 그 주위의 픽셀들 중 검은 픽셀이 적어도 2개에서 6개사이에 있어야 하며, 
③ 적어도 픽셀 I(i-1,j), I(i,j+1), I(i+1,j)중의 하나는 배경 픽셀 즉 255이어야 하며, 
④ 적어도 픽셀 I(i,j+1), I(i+1,j), I(i,j-1)중의 하나는 배경 픽셀 즉 255이어야 한다. 
⑤ 조건에 맞으면 픽셀을 제거한다. 

위의 두 subiteration을 계속하여 더이상 지울 픽셀이 남아 있지 않을 때까지 계속 적용 시킨다.

Posted by SB패밀리