Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image 图像增强-从写入中清除给定图像_Image_Matlab_Image Processing - Fatal编程技术网

Image 图像增强-从写入中清除给定图像

Image 图像增强-从写入中清除给定图像,image,matlab,image-processing,Image,Matlab,Image Processing,我需要清理这张图片删除“清理我”的文字并使其明亮。 作为图像处理课程作业的一部分,我可能会使用matlab函数ginput在图像中查找特定点(当然,在脚本中,您应该硬编码所需的坐标) 您可以使用conv2、fft2、ifft2、fftshift等 您还可以使用中位数、平均值、最大值、最小值、排序等 我的基本想法是使用图片中间的白色和黑色值,并将它们插入黑白条的其他部分。然而,这张照片给人一种非常合成的感觉 你能告诉我怎么做吗?中值滤波器不会给出很好的结果。我看到两种删除“清洁我”的方法。两者都依

我需要清理这张图片删除“清理我”的文字并使其明亮。

作为图像处理课程作业的一部分,我可能会使用matlab函数ginput在图像中查找特定点(当然,在脚本中,您应该硬编码所需的坐标)

您可以使用conv2、fft2、ifft2、fftshift等

您还可以使用中位数、平均值、最大值、最小值、排序等

我的基本想法是使用图片中间的白色和黑色值,并将它们插入黑白条的其他部分。然而,这张照片给人一种非常合成的感觉


你能告诉我怎么做吗?中值滤波器不会给出很好的结果。

我看到两种删除“清洁我”的方法。两者都依赖于水平相似性

1) 仅在水平方向使用长1D低通滤波器

2) 使用1D中值滤波器,长度可能为10像素

对于这两种解决方案,您当然必须排除星体部分

当谈到亮度时,你可以尝试直方图均衡化。然而,这并不能修复亮度的不均匀性。也许均衡前的高通可以解决这个问题


关于

做这种事情的一般技巧叫做。但为了做到这一点,你需要一个面具的区域,你想在绘画。因此,让我们假设我们设法获得了一个好的遮罩,并修复了原始图像,考虑到该遮罩的形态膨胀:

要得到那个面具,我们不需要什么花哨的东西。首先对原始图像和中值滤波结果之间的差异进行二值化:

你可以移除孤立的像素;将代表国旗星星的像素通过水平方向的放大组合,然后用一个小正方形进行另一次放大;移除这个刚刚创建的最大组件;然后对初始遮罩执行测地扩张,结果到目前为止。这就是上面的好面具

现在需要修复的算法有很多,但我发现的最简单的算法之一是在中描述的,应该很容易实现。我没有使用它,但您可以检查并验证您可以获得哪些结果

编辑:我错过了你也想要使图像变亮

在不使较亮区域变得更亮的情况下,使图像变亮的一种简单方法是应用小于1的伽马因子。更具体地说,您可以首先应用相对较大的低通滤波器,对其求反,将原始图像乘以它,然后应用伽马因子。在第二种情况下,最终图像可能比第一个图像更暗,因此将其乘以一个简单的标量值。以下是这两种情况的结果(左一种只是伽马0.6):

如果确实要使图像变亮,则可以应用双边过滤器并对其进行二值化:


删除文本的最简单方法是,如克劳斯夫所说,在带有条纹的区域使用长的一维中值滤波器。为了不损坏星星,您需要保留此部分的备份,并在中值滤波器运行后进行更换。为此,可以使用
ginput
标记星形零件的右下侧:

% Mark lower right corner of star-region
figure();imagesc(Im);colormap(gray)
[xCorner,yCorner] = ginput(1);
close
xCorner = round(xCorner); yCorner = round(yCorner);

% Save star region
starBackup = Im(1:yCorner,1:xCorner);

% Clean up stripes
Im = medfilt2(Im,[1,50]);

% Replace star region
Im(1:yCorner,1:xCorner) = starBackup; 
这就产生了

要解决曝光问题(中间部分比拐角处更亮),可以将二维高斯模型拟合到图像并进行归一化。如果您想这样做,我建议您研究一下
fit
,尽管如果您以前没有使用过模型拟合,这可能有点技术性

我发现的二维高斯分布如下所示:

把这两件事放在一起,可以得到:

我使用gausswin()函数来生成高斯。遮罩:

Pic_usa_g =  abs(1 - gausswin(  size(Pic_usa,2)  ));
Pic_usa_g = Pic_usa_g + 0.6;
Pic_usa_g = Pic_usa_g .* 2;
Pic_usa_g = Pic_usa_g';
C = repmat(Pic_usa_g, size(Pic_usa,1),1);

然后将图像与遮罩相乘,得到固定图像


因为我只能使用自己的功能。你能不能写一个关于highpassFilter的简短代码,我需要在直方图等式之前完成。我很难理解如何实现that@Androidy高通滤波器只是
1-你的低通滤波器
@mmgp我的低通滤波器这里是我的中值滤波器?那么我怎么知道截止频率在哪里呢?@mmgp我的想法是找到截止灰度值,比如说17,而不是像h=find这样做(请查看您的书籍,这是一个微不足道的任意阈值。非常感谢,我可以使用我创建的中值滤波器清除文字,但是我只能使用我自己的功能。请您帮助我使用HighPassFilter代码。我需要它来照亮picture@Androidy正如你所看到的,我没有用它来照亮图像。应用伽马因子是一个非常简单的步骤,再简单不过了。此外,使用中值滤波器“清除”此图像会产生大量伪影,因此您不仅要清除它。因为您可以使用自己的函数,所以可以实现上面最简单的修复算法。好的,我使用了高斯高通滤波器。滤波器(D>=raduis^2)=1-exp(-D(D>=raduis^2)/(2*(sigma^2));它可以工作。但我也会尝试修复。谢谢@mmgp@Androidy我从来没有强迫你做任何事情,请选择对你帮助最大的(我很确定这不是我的答案,因为你已经提到你正在使用中值滤波来解决你的问题)。如果你同意的话,我会让他保留分数,直到他获得更多分数,并将答案切换回来。这能解决什么问题吗?这个答案怎么能被接受?非常奇怪。@mmgp你的答案帮助我意识到我需要做什么。然而,既然你有2k+分。而且guy为我节省了一个小时的时间来寻找我需要的函数,一个他没有分数我接受了他的答案,给了你加1分。如果你愿意,我可以把它换回来。我不是有意冒犯你。@Android我不担心我,只是这个答案解决不了任何问题,所以如果其他人