相关疑难解决方法(0)

使用Python在图像上进行FFT

我在Python中使用FFT实现了一个问题.我有完全奇怪的结果.好吧,我想打开图像,获取RGB中每个像素的值,然后我需要在它上面使用fft,然后再次转换为图像.

我的步骤:

1)我正在使用Python中的PIL库打开图像

from PIL import Image
im = Image.open("test.png")
Run Code Online (Sandbox Code Playgroud)

2)我得到了像素

pixels = list(im.getdata())
Run Code Online (Sandbox Code Playgroud)

3)我将每个像素分成r,g,b值

for x in range(width):
    for y in range(height):
        r,g,b = pixels[x*width+y]
        red[x][y] = r
        green[x][y] = g
        blue[x][y] = b
Run Code Online (Sandbox Code Playgroud)

4).我们假设我有一个像素(111,111,111).并在所有红色值上使用fft

red = np.fft.fft(red)
Run Code Online (Sandbox Code Playgroud)

然后:

print (red[0][0], green[0][0], blue[0][0])
Run Code Online (Sandbox Code Playgroud)

我的输出是:

(53866+0j) 111 111
Run Code Online (Sandbox Code Playgroud)

我认为这是完全错误的.我的图像是64x64,而来自gimp的FFT完全不同.实际上,我的FFT只给出了具有巨大值的数组,这就是为什么我的输出图像是黑色的.

你知道问题出在哪里吗?

[编辑]

我按照建议改变了

red= np.fft.fft2(red)
Run Code Online (Sandbox Code Playgroud)

然后我扩展它

scale = 1/(width*height)
red= abs(red* scale)
Run Code Online (Sandbox Code Playgroud)

而且,我只得到黑色图像.

[EDIT2]

好的,让我们拍一张照片. test.png

假设我不想打开它并保存为灰度图像.所以我这样做.

def getGray(pixel):
    r,g,b = pixel
    return (r+g+b)/3  

im = Image.open("test.png")
im.load()

pixels = list(im.getdata())
width, …
Run Code Online (Sandbox Code Playgroud)

python image fft dft

7
推荐指数
2
解决办法
2万
查看次数

使用OpenCV Python检测并可视化两个图像之间的差异

我有两张图片,并想让它们之间的区别显而易见。我想为两个图像添加颜色,以便用户可以在一两秒钟内清楚地发现所有差异。

例如,这是两张图片,但有一些区别:

leftImage.jpg:

第一张图片

rightImage.jpg:

第二张图片

我当前使差异明显的方法是创建一个蒙版(两个图像之间的差异),将其涂成红色,然后将其添加到图像中。目的是用强烈的红色清楚地标记所有差异。这是我当前的代码:

import cv2

# load images
image1 = cv2.imread("leftImage.jpg")
image2 = cv2.imread("rightImage.jpg")

# compute difference
difference = cv2.subtract(image1, image2)

# color the mask red
Conv_hsv_Gray = cv2.cvtColor(difference, cv2.COLOR_BGR2GRAY)
ret, mask = cv2.threshold(Conv_hsv_Gray, 0, 255,cv2.THRESH_BINARY_INV |cv2.THRESH_OTSU)
difference[mask != 255] = [0, 0, 255]

# add the red mask to the images to make the differences obvious
image1[mask != 255] = [0, 0, 255]
image2[mask != 255] = [0, 0, 255]

# store images
cv2.imwrite('diffOverImage1.png', image1)
cv2.imwrite('diffOverImage2.png', image1) …
Run Code Online (Sandbox Code Playgroud)

python opencv image image-processing computer-vision

7
推荐指数
4
解决办法
1779
查看次数

如何比较两个彩色图像之间的相似性?

两张并排的图像(请忽略中间的红线

我想比较这两个图像的接近程度(相似区域中的红色),但我不能逐个像素地进行,因为它们的颜色位置不完全相同。有人知道这里有什么好方法吗?

谢谢,

python image machine-learning computer-vision

6
推荐指数
1
解决办法
5397
查看次数