Tiff 中值滤波器导出为单帧 OpenCV Python
Tiff median filter exports as single frame OpenCV Python
我正在尝试让一个程序 运行 处理 60 帧的序列(在一个 tiff 文件中)并应用降噪过滤器(中值)以便在分析之前稍微清理一下帧.但是,我的程序(逐帧处理)将输出单帧 tiff;这是为什么?我该如何处理?
from PIL import Image
import cv2
import numpy as np
im = Image.open('example_recording.tif').convert('L')
im.save('greyscale_example.tif') #converts to greyscale
width,height = im.size
image_lookup = 0
class ImageSequence:
def __init__(self, im):
self.im = im
def __getitem__(self, ix):
try:
if ix:
self.im.seek(ix)
return self.im
except EOFError:
raise IndexError # if end of sequence
for frame in ImageSequence(im):
imarray = np.array(frame)
Blur = cv2.medianBlur(imarray,5)
frame = Image.fromarray(Blur)
im.save('corrected.tif')
我认为你没有正确地重新组合你的最终堆栈(上面没有显示?),并保存单个帧(最后一帧)?
另一种方法是放弃 OpenCV 并使用 scipy:
import numpy
import scipy
from scipy import ndimage
a = numpy.random.randint(0,255,(100,100,60))
a.shape
#(100L, 100L, 60L)
b = scipy.ndimage.filters.generic_filter(a, numpy.median, 5)
b.shape
#(100L, 100L, 60L)
我正在尝试让一个程序 运行 处理 60 帧的序列(在一个 tiff 文件中)并应用降噪过滤器(中值)以便在分析之前稍微清理一下帧.但是,我的程序(逐帧处理)将输出单帧 tiff;这是为什么?我该如何处理?
from PIL import Image
import cv2
import numpy as np
im = Image.open('example_recording.tif').convert('L')
im.save('greyscale_example.tif') #converts to greyscale
width,height = im.size
image_lookup = 0
class ImageSequence:
def __init__(self, im):
self.im = im
def __getitem__(self, ix):
try:
if ix:
self.im.seek(ix)
return self.im
except EOFError:
raise IndexError # if end of sequence
for frame in ImageSequence(im):
imarray = np.array(frame)
Blur = cv2.medianBlur(imarray,5)
frame = Image.fromarray(Blur)
im.save('corrected.tif')
我认为你没有正确地重新组合你的最终堆栈(上面没有显示?),并保存单个帧(最后一帧)?
另一种方法是放弃 OpenCV 并使用 scipy:
import numpy
import scipy
from scipy import ndimage
a = numpy.random.randint(0,255,(100,100,60))
a.shape
#(100L, 100L, 60L)
b = scipy.ndimage.filters.generic_filter(a, numpy.median, 5)
b.shape
#(100L, 100L, 60L)