Ниже приведен пример кода, который я использую.
import numpy as np
import pandas as pd
import pims
from pims import pipeline
import trackpy as tp
from scipy import ndimage
import os
import matplotlib as mpl
import matplotlib.pyplot as plt
@pipeline
def binary(frame):
gray = frame.dot([0.07, 0.72, 0.21])
height = gray.shape[0]
width = gray.shape[1]
threshold = 180
for i in np.arange(height):
for j in np.arange(width):
a = gray.item(i,j)
if a > threshold:
b = 255
else:
b = 0
gray.itemset((i,j), b)
return gray
id_example = 1
rawframes = pims.ImageSequence(os.path.join('BubbleSize/90FoamQuality/DryFoams', 'T20190411_002_ (*).jpg'), process_func=binary)
plt.imshow(rawframes[5],'binary')
Я преобразую это изображение:
На этом изображении используется код:
Что я надеюсь сделать, так это лучше определить эти белые линии , Я могу изменить пороговое значение, чтобы лучше определить изображение, но мне любопытно, есть ли лучший способ удалить фоновый шум в исходном изображении или перед установкой порога? Я новичок в обработке изображений. OpenCv, вероятно, будет проще в использовании, это использует PIMS.
edit -> Ниже приведен пример, где я уменьшил порог до 150. Формы намного менее сильны. Я хочу просто наметить эти фигуры, а затем каким-то образом удалить лишние белые точки. Хотя я не уверен, как.