Matlab提取图像的RGB分量以及RGB的阈值分割

Matlab提取图像的RGB分量以及RGB的阈值分割
本教程讲解如何将⼀副RGB图像,提取出图像的R,G,B分量的图像。如何将图像进⾏颜⾊的阈值分割。
原图像
Matlab提取RGB颜⾊分量:
我们知道,⼀张RGB图像,对应着⼀个M x N x 3 的三维图像。这⾥的3代表着R,G,B三个分量。其数据类型为uint8类型。数值⼤⼩在[0,255]之间。
例如:我们在Matlab中读⼊本次测试的图像。I=imread(‘test.bmp’);
在⼯作区中可以看到其数值。
PR=I(:,:,1);%提取红⾊分量 PG=I(:,:,2);%提取绿⾊分量 PB=I(:,:,3);%提取蓝⾊分量
运⾏代码:
clc;
close all;
clear all;
I=imread('test.bmp');%要求你.m⽂件下有test.bmp这个图像⽂件
PR=I(:,:,1);%提取红⾊分量
PG=I(:,:,2);%提取绿⾊分量
PB=I(:,:,3);%提取蓝⾊分量
figure;
subplot(2,2,1);imshow(I);title('原图像');
subplot(2,2,2);imshow(PR);title('提取红分量后');
subplot(2,2,3);imshow(PG);title('提取绿⾊分量后');
subplot(2,2,4);imshow(PB);title('提取蓝⾊分量后');
运⾏的效果图:
RGB阈值分割
上⾯这种RGB通道分量的提取的效果,并不是我想要的结果。我想要的结果是下图这样的。
因此,我们使⽤图像的阈值分割。
道格拉斯
阈值分割的基本思想是确定⼀个阈值,然后把每个像素点的灰度值和阈 值相⽐较,根据⽐较的结果把该像素划分为两类——前景或背景。
源⾃参考⽂档:
图像阈值化分割是⼀种传统的最常⽤的图像分割⽅法,因其实现简单、计算量⼩、性能较稳定⽽成为图像分割中最基本和应⽤最⼴泛的分割技术。它特别适⽤于⽬标和背景占据不同灰度级范围的图像。它不仅可以极⼤的压缩数据量,⽽且也⼤⼤简化了分析和处理步骤,因此在很多情况下,是进⾏图像分析、特征提取与模式识别之前的必要的图像预处理过程。图像阈值化的⽬的是要按照灰度级,对像素集合进⾏⼀个划分,得到的每个⼦集形成⼀个与现实景物相对应的区域,各个区域内部具有⼀致的属性,⽽相邻区域布局有这种⼀致属性。这样的划分可以通过从灰度级出发选取⼀个或多个阈值来实现。
基本原理是:通过设定不同的特征阈值,把图像象素点分为若⼲类。
常⽤的特征包括:直接来⾃原始图像的灰度或彩⾊特征;由原始灰度或彩⾊值变换得到的特征。
实现代码:
clc;
close all;
clear all;
I=imread('test.bmp');
[m,n,d]=size(I);
level=15;%设置阈值
level2=70;%设置阈值
for i=1:m
for j=1:n
if((I(i,j,1)-I(i,j,2)>level2)&&(I(i,j,1)-I(i,j,3)>level2))
r(i,j,1)=I(i,j,1);
r(i,j,2)=I(i,j,2);
r(i,j,3)=I(i,j,3);
else
r(i,j,1)=255;
r(i,j,2)=255;
r(i,j,3)=255;
end
end
end
figure;
subplot(2,2,1);imshow(I);title('原图像');
subplot(2,2,2);imshow(r);title('提取红分量后');%显⽰提取红分量后的图%提取绿分量,不满⾜阈值的变为⽩⾊
for i=1:m人工电源网络
for j=1:n
if((I(i,j,2)-I(i,j,1)>level)&&(I(i,j,2)-I(i,j,3)>level))机床电气原理图
g(i,j,1)=I(i,j,1);
g(i,j,2)=I(i,j,2);
g(i,j,3)=I(i,j,3);
else
g(i,j,1)=255;
g(i,j,2)=255;
g(i,j,3)=255;
end
end
end
subplot(2,2,3);imshow(g);title('提取绿分量后');
%提取蓝⾊分量
for i=1:m
for j=1:n
if((I(i,j,3)-I(i,j,1)>level)&&(I(i,j,3)-I(i,j,2)>level))
b(i,j,1)=I(i,j,1);
b(i,j,2)=I(i,j,2);
b(i,j,3)=I(i,j,3);
else
b(i,j,1)=255;
b(i,j,2)=255;
b(i,j,3)=255;
sai马达
end
end
end
subplot(2,2,4);imshow(b);title('提取蓝⾊分量后');
subplot(2,2,4);imshow(b);title('提取蓝⾊分量后');
运⾏结果图:张自忠小学
图像中去除某⼀个区域
⽐如,我想去除红⾊分量的矩形。但是这两个红⾊分量数值⾮常的相近,不好通过阈值来分割。那我们要如何将红⾊矩形去除呢?(本篇⽂章使⽤最简单的去除⽅法,下⼀篇⽂章则会讲解如何使⽤形状识别来提取某个图形。)
解决⽅法:
这⾥解决⽅法很简单,先将原图像,那⼀块区域赋值成⽩⾊,再通过阈值分割就可以将其区分开。
代码实现:
开放info共享平台copy_image = I;
r = 50:100;%要赋值的⾏坐标
c = 20:300;%要赋值的列坐标
copy_image(r,c,1:3) = 255;
figure;
imshow(copy_image);
运⾏结果:
在将其进⾏图像分割,即可将原来的矩形去除:参考⽂档:

本文发布于:2024-09-21 22:32:39,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/367510.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:图像   阈值   分量
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议