#4294. C++ L11 图像的二值化处理

C++ L11 图像的二值化处理

Background

C++ L11 图像的二值化处理(50分)

题目名称:图像的二值化处理

题目描述:

我们把用黑、白、灰颜色表示的图像叫做灰度图(Gray Image)。像素是组成图像的最小单元,灰度图的每个像素的颜色记为一个0~255的整数,叫做像素值。0代表黑,255代表白,其他数字代表不同深度的灰色,数值越大颜色越浅。如下图所示。 image 一张黑白照片高度是m个像素,宽度是n个像素。我们可以用二维数组描述这个m*n的像素点阵。下面的例图是一个7*8的像素点阵,并标记了像素值。

image 二值图(Binary Image)是指仅包含黑色和白色两种颜色的图像。二值图的像素值只能是0和255,分别代表黑和白。

图像的二值化处理过程如下:选择一个临界值k,将所有小于k的像素值,设置为0;所有大于或等于k的像素值,设置为255。这种方法可以将灰度图转化为二值图。例图中当k=125时的二值图如下图所示。

image

现在请你写一个程序,已知灰度图每个点的像素值,以及临界值k,求二值图每个点的像素值。

输入:

第一行包含两个整数m(1<=m<=30),n(1<=n<=30),分别代表灰度图的高度和宽度;

第二行一个整数k(0<k<255),代表二值化处理时选取的临界值;

接下来有m行,每行包含n个0~255的整数,表示灰度图的像素值,同一行中相邻两个数用空格隔开。

输出:

共m行,每行包含n个整数,只能是0或255,代表转化后二值图的像素值,相邻两个数用空格隔开。

输入样例:

2 3

120

250 120 115

0 200 27

输出样例:

255 255 0

0 255 0

输入样例:

5 6

148

215 182 58 36 150 97

18 182 199 209 133 55

72 130 173 61 124 176

13 37 98 22 217 156

26 9 81 111 207 172

输出样例:

255 255 0 0 255 0

0 255 255 255 0 0

0 0 255 0 0 255

0 0 0 0 255 255

0 0 0 0 255 255

Limitation

1s, 1024KiB for each test case.