我通过 Python 3.7 使用 OpenCV。我有一组单色图像,如下所示:
我想找到这些图像上的所有“关节点”,其中“关节点”是两块木板每个交叉点的中心(1 像素)。这些“关节”大致由下图中的红色圆圈表示:
第一个想法是对图像进行骨架化,然后通过算法找到所有连接的边缘,但所有骨架化技术都给了我摆动或圆角和额外的“芽”。
import cv2
import numpy as np
from skimage.morphology import skeletonize
image = cv2.imread("SOURCE_IMAGE.jpg", cv2.IMREAD_GRAYSCALE)
binary_image = cv2.adaptiveThreshold(image, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 91, 12)
skeleton = (skeletonize(binary_image//255) * 255).astype(np.uint8)
Run Code Online (Sandbox Code Playgroud)
结果:
第二个想法是找到内部轮廓,将它们近似为边界点,找到最近的邻居,然后以某种方式计算中心,但是,再一次,Canny 边缘检测方法给了我摆动的角和额外的点。
import cv2
image = cv2.imread("SOURCE_IMAGE.jpg", cv2.IMREAD_GRAYSCALE)
edged = cv2.Canny(image, 100, 200)
Run Code Online (Sandbox Code Playgroud)
结果:
有没有可靠的方法来解决这个问题?
我正在尝试消除监视器屏幕照片中的噪音。这是源照片:
我尝试了一些不同的方法,所以我的代码的当前版本如下:
clr_img = cv2.imread("D:\Noisy.jpg", 1)
gray_img = cv2.cvtColor(clr_img, cv2.COLOR_BGR2GRAY)
gray_img = cv2.fastNlMeansDenoising(gray_img, h=11)
binary_image = cv2.adaptiveThreshold(gray_img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 91, 12)
Run Code Online (Sandbox Code Playgroud)
结果如下:
有可能消除这种噪音吗?
我(仍在)尝试在 Tensorflow 2.0 后端使用 Keras 实现一个简单的 Unet 网络。
我的模板和蒙版是 1536x1536 RGB 图像(蒙版是黑白的)。根据这篇文章,可以测量所需的内存量。
我的模型因张量 [1,16,1536,1536] 上的内存分配错误而崩溃。使用上面文章中给出的方程,我计算了这个张量所需的内存量:1 * 16 * 1536 * 1536 * 4 = 144 MB。我有 GTX 1080 Ti,大约 9 GB 可用于 Tensorflow。怎么了?我错过了什么吗?
这是一个几乎完整的回溯:
2020-03-02 15:59:13.841967: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudart64_100.dll
2020-03-02 15:59:16.083234: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2
2020-03-02 15:59:16.087240: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library nvcuda.dll
2020-03-02 15:59:16.210856: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1618] Found device 0 …Run Code Online (Sandbox Code Playgroud) 我正在处理二值图像分割问题。我已经成功编译并训练了模型。现在我正在努力实现两个目标:
据我了解,confusion_matrixscikit -learn包可以帮助创建一个完整的混淆矩阵,但我无法让它与我的自定义数据生成器一起使用。根据文档,这里有一个代码confusion_matrix:
sklearn.metrics.confusion_matrix(y_true, y_pred, *, labels=None, sample_weight=None, normalize=None)
Run Code Online (Sandbox Code Playgroud)
我不明白如何y_true使用自定义数据生成器进行检索:
def learn_generator(templates_folder, masks_folder, image_width, batch_size, shuffle=True):
"""Generate individual batches form dataset"""
counter = 0
images_list = os.listdir(templates_folder)
if shuffle:
random.shuffle(images_list)
while True:
templates_pack = np.zeros((batch_size, image_width, image_width, 3)).astype('float')
masks_pack = np.zeros((batch_size, image_width, image_width, 1)).astype('float')
for i in range(counter, counter + batch_size):
template = cv2.imread(templates_folder + '/' + images_list[i]) / 255.
templates_pack[i - counter] = template
mask = cv2.imread(masks_folder + '/' + …Run Code Online (Sandbox Code Playgroud)