У меня медленно работает Imshow, когда я использовал фреймворк Scikit, это из-за следующего кода?
while True:
ret, frame = offlinevid.read()
frame = cv2.resize(frame, size, interpolation = cv2.INTER_AREA)
# Test Processing
imgforprocessing = img_as_float(frame)
sigma_est = np.mean(estimate_sigma(imgforprocessing, multichannel = True))
nlm = denoise_nl_means(imgforprocessing, h = 1.5*sigma_est, fast_mode=True, patch_size = 5, patch_distance= 3, multichannel = True)
#cv2.imshow("Test", nlm)
cv2.imshow("Test", frame)
Я хочу воспроизводить как обычное видео со скоростью 30 кадров в секунду, но когда я добавляю denoise_nl_means, оно просто падает до 5 кадров в секунду. Как я могу улучшить это?
Редактировать: я должен предоставить больше информации. Когда я удалил denoise_nl_means, частота кадров воспроизведения видео стала нормальной. Я хочу использовать шум, потому что я работаю с микроскопическими c изображениями, которые имеют много шума. Есть ли функция OpenCV для меня, чтобы сделать то же самое, что denoise_nl_means?
Я пробовал Обнаружение гребня с морфингом
ridge_filter = cv2.ximgproc.RidgeDetectionFilter_create(cv2.CV_32FC1, 1, 1 , 3, cv2.CV_8UC1, 1, 0 , cv2.BORDER_DEFAULT)
ridges = ridge_filter.getRidgeFilteredImage(frame)
blank_mask = np.zeros(frame.shape, dtype=np.uint8)
thresh = cv2.threshold(ridges, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (3,3))
opening = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel, iterations=1)
inverse = 255 - opening
inverse = cv2.merge([inverse,inverse,inverse])
removed_artifacts = cv2.bitwise_and(frame,frame,mask=opening)
В удаленных артефактах все еще присутствует шум от микроскопических изображений c. Это просто пример Изображение , и результаты очень шумные. Любое предложение о том, как их удалить?