[英]MATLAB: how to transform one image to another image
我正在嘗試在MATLAB中將一張圖片轉換為另一張圖片,與此同時,還要從此操作中獲得轉換函數T(x,y)
(例如T(x,y) = (x + a(x,y), y + b(x,y))
)。 我們以下面的圖為例。 我想將第一個圖形中的正方形轉換為另一個圖形中的圓形,並且輸出給了我一個轉換函數,因此,每當我在正方形上使用函數時,我都會得到圓。
我研究過的功能:
我已經研究過imwarp ,但它應該僅用於幾何變換(縮放,旋轉,剪切)。 我不認為這在將正方形轉換為圓形時是有用的,而不是事先提供任何變換矩陣。
我已經研究過使用來自MATLAB 示例的 imregconfig和imregister ,但它似乎只適用於具有相同結構但強度不同的圖像。 另外,它不提供任何轉換功能。 如果我錯了,請糾正我。
預先感謝您的任何幫助!
有效轉換的解決方案空間是無限的。 我們如何選擇“正確”的?
對於這些輸入的一個可能的變換是將方形翻譯-0.5
在x
和-0.5
在y
。 然后將其縮放為兩倍大小( x' = 2x
, y' = 2y
)並應用平方到圓映射函數 。 (解決方案1)
另一個完全有效的轉換函數可以通過表達式運行輸入中的所有點
( (x == 0 || x == 1) && (0 <= y <= 1) || ( (y == 0 || y == 1) && (0 <= x <= 1) )
如果所有點都通過,只需打印出"x^2 + y^2 = 1"
。 (解決方案2)
解決方案(1)和(2)都生成的代碼似乎可以滿足您所介紹的情況,但是顯然(2)太泛泛而無用。 我認為在我們開始在代碼中編寫解決方案之前,您需要更准確地定義問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.