#4294. C++ L11 图像的二值化处理
C++ L11 图像的二值化处理
Background
C++ L11 图像的二值化处理(50分)
题目名称:图像的二值化处理
题目描述:
我们把用黑、白、灰颜色表示的图像叫做灰度图(Gray Image)。像素是组成图像的最小单元,灰度图的每个像素的颜色记为一个0~255的整数,叫做像素值。0代表黑,255代表白,其他数字代表不同深度的灰色,数值越大颜色越浅。如下图所示。
一张黑白照片高度是m个像素,宽度是n个像素。我们可以用二维数组描述这个m*n的像素点阵。下面的例图是一个7*8的像素点阵,并标记了像素值。
二值图(Binary Image)是指仅包含黑色和白色两种颜色的图像。二值图的像素值只能是0和255,分别代表黑和白。
图像的二值化处理过程如下:选择一个临界值k,将所有小于k的像素值,设置为0;所有大于或等于k的像素值,设置为255。这种方法可以将灰度图转化为二值图。例图中当k=125时的二值图如下图所示。
现在请你写一个程序,已知灰度图每个点的像素值,以及临界值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.