matlab图像转换程序

有一张火焰图片 想把火焰转成温度分布 有个程序 但是运行出来显示的不对劲 问问专家们 是程序有问题 还是转换公式有问题?先谢谢了

clc;clear;
A=imread('1.jpg');%读取图像
Am=A(:,:,1).*A(:,:,2).*A(:,:,3);
[px, py]=find(Am==0);
A(px,py,1)=1;
A(px,py,2)=1;
A(px,py,3)=255;%RGB值中有1个为零时,返回值(1,1,255),避免测温公式中出现Ln0的情况?
rr=A(:,:,1);
gg=A(:,:,2);
bb=A(:,:,3);%除去0以后的像素点RGB值
r1=reshape(rr,1023*682,1);
g1=reshape(gg,1023*682,1);
b1=reshape(bb,1023*682,1);%将RGB值转化为600*800行1列的矩阵
P=zeros(1023*682,5);
for i=1:682
    for j=1:1023
        P(j+(i-1)*682,1)=i;
        P(j+(i-1)*682,2)=j;
        P(j+(i-1)*682,3)=r1(j+(i-1)*682,1);
        P(j+(i-1)*682,4)=g1(j+(i-1)*682,1);
        P(j+(i-1)*682,5)=b1(j+(i-1)*682,1);
    end
end
%定义600*800行5列的矩阵,每列元素分别为火焰图像像素点的x坐标,y坐标,R值,G值,B值
r=P(:,3);
g=P(:,4);
b=P(:,5);%图像像素点的RGB值,600*800行1列的矩阵
R=im2double(r);
G=im2double(g);
B=im2double(b);%将RGB值转化为双精度浮点类型?
k=R.*B./G./G;
k1=log(k);
T=903.37/(1.3083-k1);%计算温度T
imshow(A);


img

我修改了部分,靠[m, n, ~] = size(A)获取图像的尺寸,尺寸来重新创建P矩阵。我的ide太慢了有点事等不到结果,你可以运行下给我反馈

img

clc; clear;

A = imread('1.png'); % 读取图像
Am = A(:,:,1) .* A(:,:,2) .* A(:,:,3);
[px, py] = find(Am == 0);
A(px,py,1) = 1;
A(px,py,2) = 1;
A(px,py,3) = 255; 

rr = A(:,:,1);
gg = A(:,:,2);
bb = A(:,:,3); 

r = reshape(rr, [], 1);
g = reshape(gg, [], 1);
b = reshape(bb, [], 1); 

[m, n, ~] = size(A); 
P = zeros(m*n, 5);

for i = 1:n
    for j = 1:m
        P(j + (i-1)*m, 1) = j;
        P(j + (i-1)*m, 2) = i;
        P(j + (i-1)*m, 3) = r(j + (i-1)*m);
        P(j + (i-1)*m, 4) = g(j + (i-1)*m);
        P(j + (i-1)*m, 5) = b(j + (i-1)*m);
    end
end

r = P(:, 3);
g = P(:, 4);
b = P(:, 5); 

R = im2double(r);
G = im2double(g);
B = im2double(b); 
k = R .* B ./ G ./ G;
k1 = log(k);
T = 903.37 / (1.3083 - k1); 

imshow(A);


从代码的内容来看,并没有明确的温度转换公式

缺了温度公式,需要将像素点的颜色和温度值进行关联字典

缺温度公式

代码运行如此之慢,嵌套循环功不可没

img

matlab根据火焰RGB值求温度程序,基于MATLAB的炉膛火焰图像温度测量
可以参考下


matlab根据火焰RGB值求温度程序,基于MATLAB的炉膛火焰图像温度测量_荔枝APP的博客-CSDN博客 内容介绍原文档由会员 花季永驻 发布基于MATLAB的炉膛火焰图像温度测量全文52页 约29000字 论述翔实摘要:介绍了锅炉火焰数字图像采集和处理的技术原理,包括双比色测温原理等。研究了Matlab在观测炉膛火焰图像中的应用,仿真进行实时检测。主要完成的工作内容如下:首先分析静态图像。测量CCD采集的炉膛火焰图像(20张/秒)得到测量大量的RGB值,通过绘图描述RGB和炉体黑体系数与炉膛火焰..._matlabrgb转温度 https://blog.csdn.net/weixin_32008105/article/details/116011476

http://t.csdn.cn/im2n6

1、建立像素点与温度高低的模型
2、遍历像素点进行处理(可并行处理,加快处理速度)
3、得到图像的温度分布图。

将 RGB 值重新调整为 600*800 行 3 列的矩阵,后续使用的索引匹配

r1 = reshape(rr, 682, 1023);  
g1 = reshape(gg, 682, 1023);  
b1 = reshape(bb, 682, 1023);

没有明确进行温度转换的公式

matlab图像类型的转换九种_matlab改图像格式_Studying 开龙wu的博客-CSDN博客 在对图像进行处理时,很多时候对图像的类型有特殊的要求。以下九个函数分别是:1.dither函数2.gray2ing函数3.grayslice函数4.im2bw函数5.ind2gray函数6.ind2rgb函数7.mat2gray函数8.rgb2gray函数9.rgb2ind函数**_matlab改图像格式 https://blog.csdn.net/qq_55433305/article/details/127061848?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169105763316800222878996%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=169105763316800222878996&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-3-127061848-null-null.142^v92^controlT0_1&utm_term=matlab%E5%9B%BE%E5%83%8F%E8%BD%AC%E6%8D%A2%E7%A8%8B%E5%BA%8F&spm=1018.2226.3001.4187

参考gpt:
结合自己分析给你如下建议:
1.代码中没有定义变量Am,所以在第二行会报错。
2.代码中没有对图像进行灰度化,所以在计算梯度时会出现错误。
3.代码中没有对图像进行滤波或噪声处理,所以在计算温度时会受到干扰。
4.代码中没有显示温度分布的结果,只显示了原始图像。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

Matlab是一种常用的计算机语言和环境,同时也是一种非常流行的图像处理工具。Matlab可以用于图像转换,包括将图像格式从一种类型转换为另一种类型,以及对图像进行旋转、缩放、切割、去噪和增强等操作。在本文中,我们将详细介绍如何使用Matlab进行图像转换。

首先,我们需要了解Matlab中的图像数据类型。Matlab中的图像可以是灰度图像、二值图像或彩色图像。灰度图像是仅包含亮度信息的图像,每个像素可以用一个值表示亮度,这个值的范围通常从0到255。二值图像仅包含黑和白两种颜色,每个像素仅有两个可能的值,0或1。彩色图像是由红、绿和蓝三种主要颜色的组合构成的图像,每个像素包含三个值,分别对应于这三种颜色的亮度值。

接下来,我们可以使用Matlab内置的图像处理函数进行图像转换。下面是一些常见的图像转换操作,以及它们在Matlab中的实现方式:

  1. 图像格式转换

Matlab提供了imread()和imwrite()函数用于读取和写入图像。imread()函数可以读取多种格式的图像文件,包括BMP、PNG、JPEG和TIFF等。imwrite()函数可以将图像保存为指定格式的文件。我们可以使用以下代码将一张PNG格式的图像转换为JPEG格式的图像:

p = 'image.png';   % 输入文件名
q = 'image.jpg';   % 输出文件名
im = imread(p);
imwrite(im, q, 'jpg');
  1. 图像旋转

Matlab提供了imrotate()函数用于对图像进行旋转。这个函数可以指定旋转角度和旋转中心点,例如:

im = imread('image.png');
rotated_im = imrotate(im, 45, 'bilinear', 'crop');
imshow(rotated_im);

这个代码将读取一张名为image.png的图像,将其旋转45度,并使用bilinear插值和剪裁选项将图像旋转到合适的大小。

  1. 图像缩放

Matlab提供了imresize()函数用于对图像进行缩放。这个函数可以指定缩放因子或缩放后的图像大小,例如:

im = imread('image.png');
resized_im = imresize(im, 0.5);     % 缩放因子为0.5
imshow(resized_im);

这个代码将读取一张名为image.png的图像,将其缩小一半,并显示缩放后的图像。

  1. 图像裁剪

Matlab提供了imcrop()函数用于对图像进行裁剪。这个函数可以指定裁剪区域的左上角坐标和宽高,例如:

im = imread('image.png');
cropped_im = imcrop(im, [50 50 200 200]);     % 左上角坐标为(50, 50),宽高为200
imshow(cropped_im);

这个代码将读取一张名为image.png的图像,将其裁剪为宽200,高200的图像,并将其左上角坐标设置为(50, 50)。

  1. 图像去噪

Matlab提供了多种去噪算法,包括中值滤波、高斯滤波和小波变换等。这里我们以中值滤波为例,演示如何在Matlab中去噪。中值滤波是一种非线性滤波器,它将每个像素的值设置为周围像素值的中位数。中值滤波器通常用于去除图像中的椒盐噪声。下面是一个中值滤波的例子:

im = imread('image.png');
noisy_im = imnoise(im, 'salt & pepper', 0.05);     % 添加椒盐噪声
denoised_im = medfilt2(noisy_im);     % 使用中值滤波器去除噪声
imshow(denoised_im);

这个代码将读取一张名为image.png的图像,并在其中添加0.05的椒盐噪声,然后使用中值滤波器去除噪声,并显示去噪后的图像。

  1. 图像增强

Matlab提供了多种图像增强算法,包括直方图均衡化、对比度调整和锐化等。这里我们演示一下如何使用直方图均衡化增强图像。直方图均衡化是一种常见的灰度图像增强方法,它通过重新分配亮度值来增强图像的对比度。下面是一个直方图均衡化的例子:

im = imread('image.png');
enhanced_im = histeq(im);     % 直方图均衡化
imshow(enhanced_im);

这个代码将读取一张名为image.png的图像,并对其进行直方图均衡化操作,并显示增强后的图像。

综上所述,Matlab提供了多种图像转换的函数和算法,可以帮助我们轻松处理图像。在实际应用中,我们可以根据具体需求选择合适的图像转换方法,并结合Matlab的其他功能,如数据处理、图形显示和模型建立等,进行更加复杂的图像处理任务。

Matlab图像转换程序是一种用于图像处理的计算机程序,它可以通过对输入图像进行处理和转换来产生目标图像。在这个程序中,Matlab软件提供了许多用于图像处理的函数和工具,以便用户能够轻松处理和转换图像。下面简单介绍一下Matlab图像转换程序的具体内容。

一、读取和显示图像

Matlab图像转换程序首先需要读取输入图像,并进行简单的预处理,以便进行后续的图像转换操作。在这一步中,我们可以使用Matlab的imread函数来读取图像,并使用imshow函数来将图像显示在屏幕上,以便用户能够更好地了解图像的内容和特性。

二、基本图像处理操作

在读取和显示图像之后,Matlab图像转换程序需要进行一些基本的图像处理操作,以便为后续的图像转换操作做好准备。常见的基本图像处理操作包括图像调整、旋转、裁剪、缩放、灰度化、二值化等。在这个程序中,我们可以使用Matlab提供的许多图像处理函数和工具来完成这些基本图像处理操作。

三、图像滤波

在Matlab图像转换程序中,图像滤波是非常重要的一个步骤。通过对图像进行滤波操作,可以去除噪声、增强图像细节,并提高图像质量。在这个程序中,我们可以使用Matlab提供的许多图像滤波函数和工具来完成图像滤波操作。常见的图像滤波方法包括均值滤波、中值滤波、高斯滤波等。

四、图像转换

在Matlab图像转换程序中,图像转换是最重要的一个步骤。通过对图像进行转换操作,可以将输入的图像变换为目标图像,满足用户的要求和需求。在这个程序中,我们可以使用Matlab提供的许多图像转换函数和工具来完成各种图像转换操作。常见的图像转换方法包括灰度转换、二值化转换、直方图均衡化、图像膨胀、图像腐蚀等。

五、结果展示

在Matlab图像转换程序中,最后一个步骤是将转换后的图像显示出来,让用户可以直观地看到转换结果。在这个程序中,我们可以使用Matlab提供的imshow函数来将目标图像显示在屏幕上,并根据用户的需要,添加标签、标题、注释、图例等元素,使图像更加直观丰富。

综上所述,Matlab图像转换程序包括了读取和显示图像、基本图像处理、图像滤波、图像转换、结果展示等多个步骤,它们交叉组合在一起,构成了一个完整的图像处理流程。在具体实现过程中,我们需要根据实际需求和问题,灵活运用这些步骤和方法,从而得到高质量的图像转换结果。