Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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 processing 去除图像中的背景噪声_Image Processing_Wolfram Mathematica - Fatal编程技术网

Image processing 去除图像中的背景噪声

Image processing 去除图像中的背景噪声,image-processing,wolfram-mathematica,Image Processing,Wolfram Mathematica,我有两张照片。第一个是背景噪声+内容,第二个只是背景噪声。我想从第一个图像中减去第二个图像,以去除内容中的噪声。图像是灰度的 我对处理这个问题的各种方法感到困惑,也对mathematica中灰度值的处理感到困惑 1) 首先,我们可以使用ImageSubtract[imageOne,imageTwo] 2) 通过使用ImageDifference[imageOne,imageTwo],我们避免了负像素值,但在使用ImageSubtract时必须使用负像素的地方,图像是人造的 3) 我们使用Imag

我有两张照片。第一个是背景噪声+内容,第二个只是背景噪声。我想从第一个图像中减去第二个图像,以去除内容中的噪声。图像是灰度的

我对处理这个问题的各种方法感到困惑,也对mathematica中灰度值的处理感到困惑

1) 首先,我们可以使用
ImageSubtract[imageOne,imageTwo]

2) 通过使用
ImageDifference[imageOne,imageTwo]
,我们避免了负像素值,但在使用
ImageSubtract
时必须使用负像素的地方,图像是人造的

3) 我们使用
ImageData
获得每个像素的值,减去每个对应的值,然后使用
Image
显示结果


每种方法都会产生不同的结果。

对于具有真实数据类型的图像,像素值可能为负值,这三种操作是等效的:

real1 = Image[RandomReal[1, {10, 10}]];
real2 = Image[RandomReal[1, {10, 10}]];

ImageData[ImageDifference[real1, real2]] ==
Abs@ImageData[ImageSubtract[real1, real2]] ==
Abs[ImageData[real1] - ImageData[real2]]

Out[4]= True
但整数数据类型的图像并非如此。这是因为在这样的图像中只能存储正值,而减法的负结果在输出图像中被剪裁为零:

int1 = Image[RandomInteger[255, {10, 10}], "Byte"];
int2 = Image[RandomInteger[255, {10, 10}], "Byte"];
这仍然是正确的:

ImageData[ImageDifference[int1, int2]]
== Abs[ImageData[int1] - ImageData[int2]]
但这两个不同之处在于剪辑:

ImageData[ImageDifference[int1, int2]]
== Abs@ImageData[ImageSubtract[int1, int2]]

将两个输入图像转换为“Real”或“Real32”数据类型时,将不会有太多令人费解的结果。

请将您的图像上载到某个位置…比我的图像更完整,我现在删除了这些图像,因为它们是多余的。