Удалить фоновый шум на изображении, Python - PullRequest
0 голосов
/ 27 апреля 2020

Ниже приведен пример кода, который я использую.

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')

Я преобразую это изображение:


original


На этом изображении используется код:


final


Что я надеюсь сделать, так это лучше определить эти белые линии , Я могу изменить пороговое значение, чтобы лучше определить изображение, но мне любопытно, есть ли лучший способ удалить фоновый шум в исходном изображении или перед установкой порога? Я новичок в обработке изображений. OpenCv, вероятно, будет проще в использовании, это использует PIMS.


edit -> Ниже приведен пример, где я уменьшил порог до 150. Формы намного менее сильны. Я хочу просто наметить эти фигуры, а затем каким-то образом удалить лишние белые точки. Хотя я не уверен, как.

low threshold

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...