繁体   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