IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 【Opencv】基于色差的简单目标提取 -> 正文阅读

[人工智能]【Opencv】基于色差的简单目标提取

??所有颜色都是由 R R R(红)、 G G G(绿)、 B B B(蓝) 3个单色调配而成, 每种单色都人为地从 0 ~ 255 0~255 0255分成了 256 256 256个级,所以根据 R R R G G G B B B的不同 组合可以表示 256 × 256 × 256 = 16777216 256×256×256=16777216 256×256×256=16777216种颜色,被称为全彩色图像(full-color image)或者真彩色图像(true-color image)。一幅全彩色图像如果不压缩,文件将会很大。例如,一幅 640 × 480 640×480 640×480像素的全彩色图像,一个像素由 3 3 3个字节来表示 R R R G G G B B B各个分量,需要保存 640 × 480 × 3 = 921600 640×480×3=921600 640×480×3=921600(约1MB)字节。
??对于自然界的目标提取,可以根据目标的颜色特征,尽量使用 R R R G G G B B B分量及它们之间的差分组合,这样可以有效避免自然光变化的影响,快速有效地提取目标。
??举例:要从果树上提取桃子的红色区域所在位置,如下面照片所示。
在这里插入图片描述
由于成熟桃子一般带红色,因此对彩色原图像首先利用红、绿色差信息提取图像中桃子的红色区域。对图像中的像素点( x i x_i xi? y i y_i yi?)( x i x_i xi? y i y_i yi?分别为像素点 i i i x x x坐标和 y y y坐标, 0 ≤ i < n 0≤i<n 0i<n n n n为图像中像素点的总数),设其红色( R R R)分量和绿色( G G G)分量的像素值分别为 R R R( x i x_i xi? y i y_i yi?)和 G G G( x i x_i xi? y i y_i yi?),其差值为 β i β_i βi?= R R R( x i x_i xi? y i y_i yi?) ? - ? G G G( x i x_i xi? y i y_i yi?),由此获得一个灰度图像( R G RG RG图像), 若 β i > 0 β_i>0 βi?>0,设灰度图像上该点的像素值为βi,否则为0(黑色)。之后做出 R G RG RG图像的直方图找出谷点 α α α(作为二值化的阈值)。逐像素扫描 R G RG RG图像,若 β i > α β_i>α βi?>α,则将该点像素值设为 255 255 255(白色),否则设为 0 0 0(黑色),获得二值图像。然后再对图像进行形态学处理。
色差图:在这里插入图片描述
直方图:在这里插入图片描述
二值化:在这里插入图片描述
形态学处理:
在这里插入图片描述

import cv2
import numpy as np
import matplotlib.pyplot as plt

img = cv2.imread('peach.jpg', 1)
#因为cv2读取的照片类型是BGR类型,所以要转成RGB类型的照片
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
#得到r, g, b通道的照片
r, g, b = cv2.split(img_rgb)
#获得RG灰度图像
c = r - g
#求出色差图的直方图,查看分割的最优阈值
hist, bins = np.histogram(c, bins = 256, range = (0, 256))
plt.plot(hist)
plt.show()
#采用190作为阈值
thresh_value = np.sum(c[np.where(c != 0)]) / np.sum(c != 0)
_, peach = cv2.threshold(c, 190, 255, cv2.THRESH_BINARY_INV)
#进行腐蚀操作,将小白点去除
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))
peach = cv2.erode(peach, kernel, iterations = 3)
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-03-08 22:28:33  更:2022-03-08 22:32:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 17:40:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码