FME:簡單快捷的遙感影像文字水印技術

       現在的測繪公司數據交流日益增多,有償購買的就不說了,尤其是無償使用的,用過就可以輕鬆的拷貝留下一份,這樣就會造成數據外泄,影響數據安全,各公司都會想辦法保證自己的數據安全,比如柵格數據添加水印(太樂地圖),矢量數據座標加偏等(高德、百度)。本文的主旨就是通過FME提供的各種轉換器實現遙感影像批量快速水印技術。

       本文的技術思路就是先獲取影像矢量範圍,然後對範圍進行分割,再爲每塊數據添加文字,文字柵格化,最後再與原影像疊加運算,生成水印影像。因爲博主是第一次發博文,並且好多轉換器也是第一次使用,所以有不正確的還請指正,大家共同學習,下面直接詳細步驟+截圖:

    一、影像座標投影轉換

  先將影像座標投影成平面座標是爲了以後參數計算的方便,如果影像本身就是平面座標或者習慣十進制度座標計算的可以跳過此步驟。我先通過CoordinateSystemExtractor獲取影像座標,方便最後輸出的時候再把座標轉回來,再用Reprojector投影成自己想要的平面座標系,截圖如下:


  二、影像矢量範圍獲取

    此過程中用到4個轉換器RasterBandNodataSetter、RasterBandNodataRemover、RasterPropertyExtractor和RasterExtentsCoercer,分別用來將0值設爲Nodata值、移除Nodata值、提取柵格屬性信息、矢量範圍提取。前兩個是爲了去除黑邊,第三個提取的屬性信息後面會用到,第四個纔是獲取矢量範圍,截圖如下:


  三、分割範圍及中心點提取

  用Tiler按尺寸大小將範圍分割成瓦片,尺寸大小可自己設置,這一步直接決定了水印的排列密度;因爲影像範圍的不規則可能會分割出小面,可以根據面積用Tester篩選掉,然後再提取每個瓦片的中心點:


  四、添加文字

  1.首先用TextAdder將步驟三中的瓦片中心點替換成想要的文本,即想要的水印文字。參數如下:


  2.再用TextStroker將文本轉換成矢量要素,碎化幾何類型可以是面或者輪廓線,不同的類型最後可以產生不同的水印效果,這裏我選的是輪廓線;字體參數決定了水印的字體,這裏特別要注意字體名稱參數的選擇,如果是漢字,WritingSystem一定要選擇中文簡體,不然生成的要素會是一堆問號,文本填充和文本寬度乘數默認就行,參數如下:


  五、文字柵格化及柵格計算

  完成上邊轉換後,水印文字已基本成型,在將文字添加到影像上之前,需要先將文字柵格化,這裏需要用到ImageRasterizer轉換器,博主試了幾次都沒有轉成功,後來查資料才發現ImageRasterizer使用的時候需要有fme_color字段,值得格式爲0,0,0(代表RGB三色數值,取值範圍0-1),可以直接AttributeCreator添加;後經過幾次測試發現這個值是決定水印透明度的關鍵因素,所以在使用的過程中可發佈出來調整水印透明度大笑

      fme_color字段創建完後,就可以使用ImageRasterizer轉柵格了,參數就要用到步驟二里提取的柵格屬性,相元大小和四至範圍設置成和原影像一樣,背景值爲0並設爲Nodata值,反鋸齒設爲Yes,參數設置如下:


        用RasterBandNodataRemover移除文字柵格的背景值後文字的柵格化就完成了,接着將原始影像與文字柵格進行疊加運算以得出最終成果,需要使用到RasterCellValueCalculator轉換器,博主也嘗試過使用RasterMosaicker,但是沒有透明的效果,所以改用RasterCellValueCalculator,其中操作選擇的是相元相加,相乘會使水印太亮,相減又太暗,這個看個人愛好吧,到此爲止整個的影像水印添加工作就完成了,以下是生成的效果圖和總流程圖:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章