圖像旋轉後的矩陣觀察
在週末報告完論文時,老師提了一個問題,就是旋轉之後矩陣是不是變大了?變大了之後是不是導致了特徵的改變,所以感知雜湊的檢測的成功率就變低了。在自己實驗時,都是給定旋轉角度後直接去計算感知雜湊,最多就是把旋轉後的圖像顯示出來,沒有仔細的去觀察矩陣的變化。因此,我們來觀察圖像旋轉後的矩陣,並且思考變化後的矩陣如何影響感知雜湊。
首先我們先準備 Lena_Gray.tiff 的圖,如以下代碼
from PIL import Image, ImageOps import numpy as np from scipy import ndimage img = Image.open(r"Lena_Gray.tiff") img = ImageOps.grayscale(img) img.show() ## 顯示圖像 print(np.array(img).shape) ## (512, 512) print(img) ##
在以上代碼中,我們多做了灰階化,目的是專注於二維陣列,也就是矩陣的旋轉。然後把 img 及 shape 打印出來,以確定是我們所需要的。下圖是 Lena_Gray
接下來旋轉矩陣並且把 shape 打印出來
img_45 = ndimage.rotate(img, 45) print(np.array(img_45).shape) ## (724, 724)
這裡我們會看到矩陣變成了(724,724), 旋轉圖像的顯示如下。
到這一步為止都很正常,符合我們的期待,先下本段的結論。圖像旋轉後,除了旋轉本會造成的特徵改變之外,對於因為旋轉造成矩陣變大而增加的數據,也可能增加特徵提取時的誤判。
而下一篇使用 OpenCV 則有點出乎我的意料之外了。