【无标题】

该博客介绍了一种基于RGB颜色的图像分割方法。通过选取感兴趣区域的像素点平均颜色,计算与该平均颜色的欧氏距离,设定阈值来判断像素点是否属于感兴趣区域。代码示例展示了如何应用该方法在'flower.jpg'图像上,实现颜色分割并展示分割结果。
摘要由CSDN通过智能技术生成

RGB颜色分割

对感兴趣区域图像分割出来,操作为选取可以代表感兴趣图像的像素点组成样本集合,通过样本集对待分割的颜色的“平均”进行估计。用向量a表示平均颜色,向量z表示RGB空间中的任一像素点的颜色特征(像素点的RGB这三个分量的值组成的向量)

若z与a的欧氏距离小于给定的阈值,则认为z与a相似。

from skimage import data, io
from matplotlib import pyplot as plt
import numpy as np
import math

image = io.imread('flower.jpg')
r = image[:, :, 0]
g = image[:, :, 1]
b = image[:, :, 2]

r1 = r[128:255, 85:169]
r1_u = np.mean(r1)
r1_d = 0.0

for i in range(r1.shape[0]):
    for j in range(r1.shape[1]):
        r1_d = r1_d + (r1[i, j] - r1_u) * (r1[i, j] - r1_u)

r1_d = math.sqrt(r1_d / r1.shape[0] / r1.shape[1])
r2 = np.zeros(r.shape, dtype='uint8')

for i in range(r.shape[0]):
    for j in range(r.shape[1]):
        if (r1_u - 1.25 * r1_d) <= r[i, j] <= (r1_u + 1.25 * r1_d):
            r2[i, j] = 1

image2 = np.zeros(image.shape, dtype='uint8')
for i in range(r.shape[0]):
    for j in range(r.shape[1]):
        if r2[i, j] == 1:
            image2[i, j, :] = image[i, j, :]

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.figure()

plt.subplot(231)
plt.axis('off')
plt.imshow(image)
plt.title('原始')

plt.subplot(232)
plt.axis('off')
plt.imshow(r, cmap='gray')
plt.title('R')

plt.subplot(233)
plt.axis('off')
plt.imshow(g, cmap='gray')
plt.title('G')


plt.subplot(234)
plt.axis('off')
plt.imshow(b, cmap='gray')
plt.title('B')

plt.subplot(235)
plt.axis('off')
plt.imshow(r2, cmap='gray')
plt.title('变化后')

plt.subplot(236)
plt.axis('off')
plt.imshow(image2)

plt.show()

#计算样本点红色的标准差

r1_d = 0.0

for i in range(r1.shape[0]):
    for j in range(r1.shape[1]):
        r1_d = r1_d + (r1[i, j] - r1_u) * (r1[i, j] - r1_u)

#寻找符合条件的点,r2为红色分割图像

r2 = np.zeros(r.shape, dtype='uint8')

for i in range(r.shape[0]):
    for j in range(r.shape[1]):
        if (r1_u - 1.25 * r1_d) <= r[i, j] <= (r1_u + 1.25 * r1_d):
            r2[i, j] = 1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值