使用Python比较三幅图像时如何计算面积度量?

问题描述 投票:0回答:1

我有三张图像:A、B 和 C。我想比较(A,B)和(C,B)之间的面积差异。有没有更有效、更准确的方法使用Python来做到这一点?

这是我目前正在做的事情,我认为这是相当不准确的:

from PIL import Image
from pycocotools import mask as coco_mask
import pandas as pd, json, cv2, numpy as np, matplotlib.pyplot as plt, os

A = r"/path/to/A"
B = r"/path/to/B"
C = r"/path/to/C"

for a_path in os.listdir(A):
    for b_path in os.listdir(B):
        if b_path in a_path:
            a_image = Image.open(A + os.sep + a_path).convert('L')
            b_image = Image.open(B + os.sep + b_path).convert('L')
            a_array = np.array(a_image)
            b_array = np.array(b_image)
            overlap_array = np.bitwise_and(a_array, b_array)
            overlap_pixel_count = np.sum(overlap_array > 0)
            n_pixel_count = np.sum(b_array > 0)
            overlap_percentage = (overlap_pixel_count / n_pixel_count) * 100
            print(overlap_percentage)
        else: 
            pass


for c_path in os.listdir(C):
    for b_path in os.listdir(B):
        if b_path in c_path:
            c_image = Image.open(bounding_boxes_path + os.sep + c_path).convert('L')  # Convert to grayscale
            b_image = Image.open(segment_masks_path + os.sep + b_path).convert('L')  # Convert to grayscale
            c_array = np.array(c_image)
            b_array = np.array(b_image)
            overlap_array = np.bitwise_and(c_array, b_array)
            overlap_pixel_count = np.sum(overlap_array > 0)
            n_pixel_count = np.sum(b_array > 0)
            overlap_percentage = (overlap_pixel_count / n_pixel_count) * 100
            print(overlap_percentage)
        else: 
            pass
答:

乙:

C:

python python-3.x image image-processing image-segmentation
1个回答
0
投票

我不清楚为什么你认为你当前的代码不准确 - 请通过示例说明原因。


我不确定您是否意识到您的第三个(C)图像是非二元的(即它包含除纯黑和白之外的许多灰色阴影),与纯黑和白的 A 和 B 不同。将阈值 C 设置为 50% 是否足够?


我不确定为什么你用 PIL 打开图像,然后将它们转换为 Numpy 数组并用 OpenCV 处理它们。为什么要这样做,而不是首先使用 OpenCV

cv2.imread()


与此同时,以下可视化可以帮助您思考问题。我加载 A 图像作为红色通道,B 图像作为绿色通道,C 图像作为蓝色通道。它使您能够轻松地可视化重叠。

一旦您澄清了上述问题,也许我可以进一步帮助您。

© www.soinside.com 2019 - 2024. All rights reserved.