如何利用matlab导入并提取jpg彩色图像像素点的坐标及其RGB值?想要完整的编码。谢谢哈。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何利用matlab导入并提取jpg彩色图像像素点的坐标及其RGB值?想要完整的编码。谢谢哈。相关的知识,希望对你有一定的参考价值。

假设原图片为“image.jpg”

代码如下:

clc;

clear;

%读入原图像

image = imread('image.jpg');

s = size(image);

%s=[98,97,3],表示image是3个98*97的矩阵,分别代表这个图像每个像素点的R、G、B值

%点[30,30]处的RGB数值:

p_r = image(30,30,1);

p_g = image(30,30,2);

p_b = image(30,30,3);

%分别读取RGB

image_r = image(:,:,1);

image_g = image(:,:,2);

image_b = image(:,:,3);

%测试RGB输出

subplot(2,2,1),imshow(image_r),title('Red component');  

subplot(2,2,2),imshow(image_g),title('green component');  

subplot(2,2,3),imshow(image_g),title('blue component');  

subplot(2,2,4),imshow(image),title('original image'); 



扩展资料:

1、图片文件的数据,简单地说,就是一个二维数组,二维数组的行对应图像的高,二维数组的列对应图像的宽,二维数组的元素对应图像的像素,二维数组元素的值就是像素的灰度值。

2、彩色空间是用来表示彩色的数学模型,又被称为彩色模型。RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的。

参考资料:

百度百科-imread

参考技术A

假设原图片为“image.jpg”。

可以使用 Python Image Library 做,load() 函数会返回一个对象,这个对象我们可以把它当作一个二维数组对待,而数组中存放的就是点的 RGB 值,可以很容易地访问到任何像素点的 RGB 值:

from PIL import Image

  # 可以支持很多种图片格式.

im = Image.open("your_picture.jpg") 

pix = im.load()

  # 获得图片的尺度,可以用于迭代

print im.size   

# 获得某个像素点的 RGB 值,像素点坐标由 [x, y] 指定

print pix[x,y] 

  # 设置 [x, y] 点的 RGB 的值为 value 

pix[x,y] = value

扩展资料:

在电脑中,RGB的所谓“多少”就是指亮度,并使用整数来表示。通常情况下,RGB各有256级亮度,用数字表示为从0、1、2...直到255。注意虽然数字最高是255,但0也是数值之一,因此共256级。如同2000年到2010年共是11年一样。

按照计算,256级的RGB色彩总共能组合出约1678万种色彩,即256×256×256=16777216。通常也被简称为1600万色或千万色。也称为24位色(2的24次方)。

参考资料来源:百度百科-RGB

参考技术B

假设图片为image.jpg ,而且是500*500的像素。

代码为:

A = imread('image.jpg');

得到的三维矩阵A, size(A) =[500 500 3],那个3就是RGB三个值所占空间,如果你想去(10,10)的RGB3个值,则A(10,10, :)即可得到RGB的一个三维的向量。

扩展资料:

注意事项

Matlab 读取彩色图像是三维数组,图像的坐标是以左上角为(0,0)点,彩色图像形成的三维数组中前两位表示图像的像素点的坐标,第三位为1时表示是图像中R的值,为2时表示G的值,为3时表示B的值。故若要对一个彩色图像分别读取R,G,B时,采用下述代码即可。

% 2017-3-14 

% write by Mr.Han

clc;

clear;

%读入原图像及获取大小

image = imread('1.jpg');

%   分别读取RGB

image_r=image(:,:,1);

image_g=image(:,:,2);

image_b=image(:,:,3);

%  测试RGB输出

subplot(2,2,1),imshow(image_r),title('Red component');  

subplot(2,2,2),imshow(image_g),title('green component');  

subplot(2,2,3),imshow(image_g),title('blue component');  

subplot(2,2,4),imshow(image),title('original image');  

参考技术C 假设图片为image.jpg ,而且是500*500的像素
代码为:
A = imread('image.jpg');

得到的三维矩阵A, size(A) =[500 500 3],那个3就是RGB三个值所占空间,如果你想去(10,10)的RGB3个值,则A(10,10, :)即可得到RGB的一个三维的向量。追问

这个三位向量就是某个像素点的RGB值?像素点坐标怎么确定?

追答

三维向量就是三个数组成的向量,你知道吧,RGB是指的红(R)、绿(G)、蓝(B)三个值。坐标就是图片上像素点所对应的位置啊,也就是说有了这个矩阵A之后,你就可知道图片的每一个像素点所对应的RGB值了。

追问

坐标怎么显示出来?因为我必须将像素点的左边和RGB值绑定,经过坐标变换变成新的图像的坐标,但是RGB值绑在一起,所以RGB不会变。

追答

你所谓的图像坐标,指的什么?
我理解的是假设图像是由500*500个像素点组成的,那个最左上角的坐标就是(1,1),最右下角的就是(500,500)。你要把坐标显示出来是要把一个坐标和它对应的RGB列出来么?如果是可以这样:
B = zeros(500*500,5);
for i =1:500
for j = 1:500
B(j+(i-1)*500,1) = i;
B(j+(i-1)*500,2) = j;
B(j+(i-1)*500,3) = A(i,j,1);
B(j+(i-1)*500,4) = A(i,j,2);
B(j+(i-1)*500,5) = A(i,j,3);
end
end
这样的到的矩阵B是一个列表,每一行的前两个元素代表像素点坐标,后三个代表RGB值。

你指的实际坐标是什么,难道是图像在屏幕的显示器上像素点坐标吗?老实将你到底要表达什么坐标我不懂。

追问

这个代码得到的矩阵等同将导入图像的坐标和RGB值进行了绑定。谢谢哈。我要做的是将拍摄的图像展开(小孔成像一类的),所以需要一个算法进行坐标转换,将原始图像的坐标转换成展开后图像的坐标。

追答

那你不说别人怎么知道你要做坐标转换呢。。。如果你要转换就再做一个坐标转换就是了。。。

本回答被提问者采纳

如何在matlab中提取全彩色图像每一点的rgb值,谢谢各位大神

参考技术A im = imread(文件);
rgb = im(x,y,:);

im就是了,(x,y)是你要取出rgb的像素点坐标

以上是关于如何利用matlab导入并提取jpg彩色图像像素点的坐标及其RGB值?想要完整的编码。谢谢哈。的主要内容,如果未能解决你的问题,请参考以下文章

如何在matlab中提取全彩色图像每一点的rgb值,谢谢各位大神

提取图像中的曲线并用于计算(MATLAB)

matlab提取图像上的任意坐标点

求高手给一个matlab提取图像lbp的代码 谢谢啦

数字图像处理课程设计(基于matlab的Hough变换检测图像边缘提取,包含完整代码)

急求灰度图像LBP特征提取matlab源代码