四、現在有二維矩陣 float[][] map 存放著一張解析度 MxN 的 24Bits 彩色影 像資料,以 Y,I,Q 顏色編碼,其資料存放方式是依像素(Pixel)循序存 放,如下圖所示。
請以 Java 或 C++ 撰寫一函式 int[][] YIQ2RGB(float[][] map){..},對其傳 入 map 矩陣後,可傳回一轉成 RGB(R,G,B 各範圍皆是 0~255 整數)的二 維整數矩陣,排列方式如同 YIQ 矩陣。像素的 YIQ 轉 RGB 公式如下圖 所示,轉換時小數部分四捨五入,但不可低於 0 或超過 255。

接著請再撰寫一函式 void Floodfill(int[][] m , int x, int y, int r1, int r2){..}, 此函式以水流填充演算法(flood fill) ,由上題所得的二維 RGB 矩陣 m, 以指定的(X,Y)座標為起點沿上下左右四個方向,持續的水流填充(搜 尋)鄰近點中(R,G,B)值範圍符合 r1 ≤ R 且 R ≤ r2 條件的點。最 後,將這些符合點的(R,G,B)值皆改為(127,127,127) 。如下圖所示, 假設(X,Y)點本身符合條件,則向四個方向水流填充,假設(X-1,Y) 點也符合條件,則繼續針對(X-1,Y)點的週邊水流填充。此題需用遞迴 (Recursion)方式處理。(25 分)
