b434: 圖片的梯度
Tags : 影像處理
Accepted rate : 24人/27人 ( 89% ) [非即時]
評分方式:
Tolerant

最近更新 : 2022-10-27 21:45

Content

一張圖片當中,最引人注目的地方,通常是變化最大的地方。

電腦當中,所有事物都是數字。變化可以想成「減法」,變化程度可以想成「兩數相減的差值」。

將此想法套用到圖片:相鄰的像素,RGB值相減。因為圖片是二維的,所以分成橫向相減、直向相減。寫成數學式子就是:

XR(x,y) = R(x+1,y) - R(x,y)  (橫向相減:右邊減自己)
YR(x,y) = R(x,y+1) - R(x,y)  (直向相減:下邊減自己)

此處以R值為例,RGB皆如此。左上角像素座標是(0,0),右下角像素座標是(W-1,H-1),W H是圖片寬高。根據這個減法的方式,圖片右邊界和下邊界需要特別處理。越過圖片邊界的時候,想像成像素複製延伸,所以∇XR(W-1,y) = 0、∇YR(x,H-1) = 0。

順帶一提,這個概念正好符合數學領域的「梯度」,於是大家都叫它「梯度」,X方向的梯度與Y方向的梯度。

接著累計兩個方向的變化程度。寫成數學式子就是:

sqrt((∇XR)2 + (∇YR)2)

不過sqrt有精確度問題、運算時間也很長,所以大家都改用:

|∇XR| + |∇YR|

為了符合RGB值的範圍,所以再除以二:

( |∇XR| + |∇YR| ) / 2.0

按照步驟,最後求出這麼一張圖片:



請你也求出這麼一張圖片。

Input

一張圖片:兩個整數 W H (1 <= W, H <= 256),是圖片的寬和高;接下來的 H 行,每行有 W*3 個整數,是每個像素的 RGB 值 (0 <= R, G, B <= 255)。

Output

請輸出處理後的圖片。計算結果四捨五入。

 

Sample Input #1
2 2
0 0 0 255 255 255
255 255 255 255 255 255
Sample Output #1
2 2
255 255 255 0 0 0
0 0 0 0 0 0
測資資訊:
記憶體限制: 64 MB
公開 測資點#0 (33%): 1.0s , <1K
公開 測資點#1 (33%): 1.0s , <1K
公開 測資點#2 (34%): 1.0s , <1M
Hint :

如果不熟悉影像處理,可以先試試看「b422: Colorful Life and Monochromatic Life」。

Tags:
影像處理
出處:
[管理者: DJWS(...) ]


ID User Problem Subject Hit Post Date
沒有發現任何「解題報告」