我试图通过去除图像中的黑色边界和无关的非眼睛特征(例如,文本和“剪辑”见下文),用3个随机方块中的平均像素值替换黑色区域,来预处理眼部血管的照片。在
crop1 = randomCrop(image2, 50, 50) #Function that finds random 50x50 area
crop2 = randomCrop(image2, 50, 50)
crop3 = randomCrop(image2, 50, 50)
mean1 = RGB_Mean(crop1)
mean2 = RGB_Mean(crop2)
mean3 = RGB_Mean(crop3)
#RGB Mean
result = [statistics.mean(k) for k in zip(mean1, mean2, mean3)]
for i in range(len(image2[:,0, 0])):
for j in range(len(image2[0,:,0])):
thru_pixel = image2[i, j]
if (thru_pixel[0] < 50 and thru_pixel[1] < 50 and thru_pixel[2] < 50):
image2[i,j, :] = result
if (thru_pixel[0] > 190 and thru_pixel[1] > 190 and thru_pixel[2] > 190):
image2[i,j, :] = result
但是,在图像的边框周围有剩余的噪声,以及左下角的文本和剪辑。在
下面是一个示例图像。在
原件:
以及后期处理
你可以看到仍然有左边的黑灰色边框噪音,以及右下角的文本和左下角的“剪辑”。我有什么办法可以在保持眼部血管完整的同时去掉这些文物吗?在
感谢您的时间和帮助!在
假设你想隔离眼部血管,这里有一个方法可以分为两个阶段,一个是去除伪影,另一个是隔离血管
从原始图像开始,我们转换为灰度和大津阈值以获得二值图像
现在我们执行变形打开来移除工件(左)。我们反转这个掩模以获得白色边界,然后进行一系列按位运算以获得去除的伪影图像(右)
从这里我们自适应阈值得到静脉
注意这里有不需要的边界,所以我们找到轮廓并使用最大阈值区域进行过滤。如果轮廓通过过滤器,我们将其绘制到一个空白遮罩上
最后,我们对原始图像进行位与运算以得到结果
注意,我们可以在自适应阈值之后执行额外的变形打开来去除小的噪声粒子,但是折衷的是它将删除静脉细节。我把这一步留给你
相关问题 更多 >
编程相关推荐