簡體   English   中英

Matlab中的圖像處理/恢復

[英]Image processing/restoration in Matlab

我有幾張圖像要從工件中校正。 它們顯示了不同的動物,但看起來卻像是被折疊了(請看所附的圖像)。 褶皺是筆直的,它們也穿過翅膀,很難看到,但它們在那里。 我想去除褶皺,但同時保留圖片中的信息(機翼的結構和顏色)。 我現在正在使用MATLAB,已經嘗試了幾種方法,但似乎沒有任何效果。

最初,我試圖通過使用FFT來查看是否可以看到任何東西,但是我看不到可以刪除的頻譜結構。 我嘗試使用幾種邊緣檢測方法(例如Sobel等),但是問題是邊緣檢測總是找到機翼的邊緣(因為它們更堅固)而不是直線。 我想知道是否有人對如何解決此問題有任何想法? 我沒有附加任何代碼,因為我嘗試過(和描述過)的任何方法都無法正常工作。

謝謝您的幫助。

例

我將在這里留給所有知道如何在不影響圖像質量的情況下擦除這些行的人:

a = imread('https://i.stack.imgur.com/WpFAA.jpg');
b = abs(diff(a,1,2));
b = max(b,[],3);
c = imerode(b,strel('rectangle',[200,1]));

在此處輸入圖片說明

我認為您應該使用二維快速傅立葉變換如果過濾器可以解決問題,那么首先使用GIMP / Photoshop可能會更容易。

我猜CC傳感器壞了(對於舊的掃描儀問題看起來不錯)。 讀取相機傳感器時可能發生電變形。 這些信號在理論上具有重復性。 我不認為這是由錯誤的colordepth / colorspace轉換引起的

如果您喜歡編碼,則還可以編寫一個基於像素的自定義濾鏡,在其中您將x個垂直像素(例如20個左右)與下一個20像素的垂直行進行比較。 與HSL(L lightnes)而不是RGB進行比較。 從所有像素以此方式計算亮度變化。
然后每個像素檢查H(heu)是否在附近像素的范圍內,取其亮度的斜率平均值(例如,取水平30個像素,計算前10個像素的平均亮度,最后10個像素將亮度應用於中心像素15,... // 30、15、10嘗試找到有效的方法

由於您的整個筆觸看起來較亮/較暗,因此該濾鏡可以使效果平滑,因此難點在於保留其他模式(機翼失真較小),因為要知道傳感器具有的色彩空間可能會更好地決定為HSL,也許HSV左右

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM