首页 > 解决方案 > 有没有办法减少像素分隔符代码的处理时间?

问题描述

我正在尝试将图像转换为一组可用于商业目的的数字处理和分析的数组。已经创建了一个代码并且它可以工作,但是有什么方法可以减少执行代码所花费的时间?

这是一种新技术商业化的最后阶段,需要考虑对该技术拍摄的图像的实时分析。

function pixelseperator()

clear all

close all
Image=imread('flirpolarcamtest3.png');


Image=uint16(Image);
[m,n]=size(Image);
Imagex=zeros(m/2,n/2);
Imagexrows=zeros((m/2),1);
col=1;
for ni=1:2:n-1
    row=1;
    for mi=1:2:m-1
      Imagexrows(row)=Image(mi,ni);
      row=row+1;   
    end
col=col+1;    
Imagex(:,col)=Imagexrows;
end
Image0=Imagex;

启动代码所需的平均时间约为 0.74 秒,这是预期的,但对于所需时间来说有点太长了,并且包含太多中间体,使代码有点多余。我正在寻找一种方法来减少冗余,从而减少处理时间。

标签: matlab

解决方案


您的代码与以下内容相同:

Image = imread('flirpolarcamtest3.png');
Image0 = uint16(Image(1:2:end-1,1:2:end-1));

我不知道为什么你的循环去n-1and m-1,而不是nand m。对于偶数大小的图像,这些将是相同的,但对于奇数大小的图像,您会使用您的代码错过一行和一列。


推荐阅读