Open and Close

发布时间: 2016年12月3日 16:34   最后更新: 2016年12月3日 16:34   时间限制: 1000ms   内存限制: 65536M

Morphological operations are tools that are used for extracting image components to represent and describe
region shapes. Two common morphological operations are open and close. Before we define these operations,
we first have to define how images are represented.
Given a binary image A with M rows and N columns, we can represent A as a set of the coordinates (r, c) (1
<= r <= M, 1 <= c <= N) such that the pixel at the specified coordinates is 1. The coordinates of the top−left
corner are (1, 1). We are also given a binary image B (called the structuring element) with 2S+1 rows and
columns. The structuring element can be represented as a set as before, except that (−S,−S) are the
coordinates of the pixel at the top−left corner.
Two operations important in morphological image processing are dilation and erosion. Dilation of an image A
by the structuring element B is defined by:
A ^ B = { a + b | a in A, b in B } intersect Z
where the addition of coordinates is defined componentwise, and Z is the set of coordinates (i,j) with 1 <= i
<= M and 1 <= j <= N. Similarly, erosion of A by B is defined by:
A v B = { w | w + b in A for every b in B }
With these two operations defined, the opening of A by B is defined by
A o B = (A v B) ^ B
and the closing of A by B is defined by
A . B = (A ^ B) v B
Roughly speaking, the opening operation is used to remove small details while preserving the overall shape.
The closing operation is used to fill in gaps while preserving the overall shape.

The input consists of a number of cases. Each case starts with a line containing the integers M, N, and S
separated by spaces (10 <= M, N <= 256, 1 <= S <= 4). The next M lines contain the rows of the image A
specified by N characters that are '.' (0) or '*' (1). The next 2S+1 lines specify the structuring element B in a
similar manner. The input is terminated by M = N = S = 0.

For each case, print the case number followed by a blank line. Then display the result of A o B followed by a
blank line, followed by the result of A . B. The format of the resulting images is the same as those of the
input images. Separate the output for different cases by a line consisting of 75 equal signs (=).

复制
10 12 1
............
..*.........
.***...***..
.***...***..
.*********..
.**********.
.*********..
.***...*.*..
............
............
***
***
***
10 12 1
............
..*.........
.***...***..
.***...***..
.*********..
.**********.
.*********..
.***...*.*..
............
............
.*.
***
.*.
0 0 0
Case 1

............
............
.***...***..
.***...***..
.*********..
.*********..
.*********..
.***........
............
............
............
..*.........
.***...***..
.***...***..
.*********..
.**********.
.*********..
.***...***..
............
............
===========================================================================
Case 2

............
..*.........
.***....*...
.***...***..
.*********..
.**********.
.*********..
..**...*....
............
............

............
..*.........
.***...***..
.****.****..
.*********..
.**********.
.*********..
.***...*.*..
............
............

其他