아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

열림과 닫힘

시간 제한1초메모리 제한128 MB

요약
각 테스트 케이스에서 이진 영상을 작은 구조 요소로 열기와 닫기 연산한 결과를 출력한다.
난이도

보통10점 중 5점

유형
구현, 시뮬레이션, 행렬
정답자
아직 제출이 없습니다

문제

형태학적 연산(morphological operation)은 영역의 모양을 표현하고 기술하기 위해 영상의 구성 요소를 추출하는 도구이다. 대표적인 두 연산이 열림(opening) 과 닫힘(closing) 이다. 두 연산을 정의하기에 앞서, 먼저 영상을 어떻게 표현하는지 정한다.

MM개의 행과 NN개의 열로 이루어진 이진 영상 AA는 픽셀 값이 11인 좌표 (r,c)(r, c) (1≤r≤M1 \le r \le M, 1≤c≤N1 \le c \le N)들의 집합으로 나타낸다. 왼쪽 위 모서리의 좌표는 (1,1)(1, 1)이다. 또한 구조 요소(structuring element) 라고 부르는 이진 영상 BB가 주어지는데, BB는 2S+12S+1개의 행과 2S+12S+1개의 열을 가지며 같은 방식으로 집합으로 나타내되 왼쪽 위 픽셀의 좌표가 (−S,−S)(-S, -S)이다(따라서 중심은 (0,0)(0, 0)이다).

기본이 되는 두 연산은 팽창(dilation) 과 침식(erosion) 이다. BB에 의한 AA의 팽창은 다음과 같이 정의한다.

A (+) B = { a + b | a in A, b in B } ∩ Z

여기서 좌표의 덧셈은 성분별로 이루어지고, ZZ는 1≤i≤M1 \le i \le M, 1≤j≤N1 \le j \le N인 좌표 (i,j)(i, j)들의 집합이다. BB에 의한 AA의 침식은 다음과 같이 정의한다.

A (-) B = { w | 모든 b in B 에 대하여 w + b in A }

이를 이용하여 BB에 의한 AA의 열림 은

A o B = (A (-) B) (+) B

이고, BB에 의한 AA의 닫힘 은

A . B = (A (+) B) (-) B

이다. 대략적으로, 열림은 전체적인 모양을 유지하면서 작은 세부를 제거하고, 닫힘은 전체적인 모양을 유지하면서 작은 틈을 메운다.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 케이스는 공백으로 구분된 세 정수 MM, NN, SS가 있는 줄로 시작한다 (10≤M,N≤25610 \le M, N \le 256, 1≤S≤41 \le S \le 4). 이어지는 MM개의 줄에는 영상 AA의 각 행이 주어지며, 각 줄은 .(0) 또는 *(1)인 NN개의 문자로 이루어진다. 그다음 2S+12S+1개의 줄에는 같은 방식으로 구조 요소 BB가 주어진다. 입력은 0 0 0인 줄로 끝난다.

출력

각 케이스마다 케이스 번호를 한 줄에 Case x 형식으로 출력하고 빈 줄을 하나 출력한다. 이어서 열림 A∘BA \circ B의 결과 영상을 출력하고, 빈 줄을 하나 출력한 뒤, 닫힘 A∙BA \bullet B의 결과 영상을 출력한다. 결과 영상의 형식은 입력 영상과 같다. 서로 다른 케이스의 출력 사이에는 등호(=) 75개로 이루어진 줄을 하나 넣어 구분한다(마지막 케이스 뒤에는 이 구분선을 출력하지 않는다).

예제1

  1. 예제 1

    입력
    10 12 1
    ............
    ..*.........
    .***...***..
    .***...***..
    .*********..
    .**********.
    .*********..
    .***...*.*..
    ............
    ............
    ***
    ***
    ***
    10 12 1
    ............
    ..*.........
    .***...***..
    .***...***..
    .*********..
    .**********.
    .*********..
    .***...*.*..
    ............
    ............
    .*.
    ***
    .*.
    0 0 0
    
    예상 출력
    Case 1
    
    ............
    ............
    .***...***..
    .***...***..
    .*********..
    .*********..
    .*********..
    .***........
    ............
    ............
    
    ............
    ..*.........
    .***...***..
    .***...***..
    .*********..
    .**********.
    .*********..
    .***...***..
    ............
    ............
    ===========================================================================
    Case 2
    
    ............
    ..*.........
    .***....*...
    .***...***..
    .*********..
    .**********.
    .*********..
    ..**...*....
    ............
    ............
    
    ............
    ..*.........
    .***...***..
    .****.****..
    .*********..
    .**********.
    .*********..
    .***...*.*..
    ............
    ............