一、问题描述
下图为一张医学图像,图中的阴影面积为坏死需要切除的脑组织,其中黑色的圆圈为AI所画,红色的圆圈为临床医生所画,现在需要计算阴影面积大小。
二、解决思路
思路一:由图可见,两个圆圈均为椭圆,考虑在图像上建立直角坐标系,然后确定两个椭圆方程,再用微积分知识求得两圆重叠部分面积大小。此种方法基本上属于纯数学计算,计算量巨大,计算到一半实在算不下去了,就放弃了。
思路二:图像处理的问题直接对像素点进行处理,首先读取该图像所有的像素点个数,然后读取图像每个像素点的RGB值,并将该GRB转换为灰度值,最后根据像素点的灰度值计算出阴影部分相对面积。此种方法的局限性在于圈外有颜色比较深的像素点和圈内有比较浅的像素点都会影响计算结果的准确度。
三、解决方法
下面介绍一下具体的思路二的解决方案,该方法是对当个像素点进行比较底层的计算操作,因此不适用像素高的图像。
3.1 导入需要的模块
from PIL import Image
import cv2
import csv
3.2 获取图像所有像素点个数信息
image=cv2.imread('7864d35aaa1262bbca983a4765f1af6.jpg')
a = image.shape
print('图像像素高度为:{},图像像素宽度为:{},图像通道数为:{}'.format(a[0],a[1],a[2]))
all_pixel_points = a[0]*a[1]
print('图像总的像素点有:{}个'.format(all_pixel_points))
3.3 遍历图像中所有像素点X坐标值、Y坐标值以及响应坐标的RGB值,并写入all_Pixel points.csv中
header = [' x坐标',' y坐标',' R',' G',' B']
wit