MATLAB图像颜色提取的算法一点改进再一点再一点

本文探讨了在MATLAB中进行图像颜色提取时如何通过改进单阈值和双阈值处理方法来提高算法速度。作者指出,通过利用MATLAB内置函数代替循环,可以显著减少计算时间。在单阈值处理中,将循环内部操作转化为二值化处理,将时间从0.15秒降低到0.01秒。后续又进行了多次改进,将处理时间进一步压缩到约0.0142秒。在双阈值处理中,通过基本矩阵操作实现,达到0.010-0.011秒的速度,认为这几乎是优化的极限。
摘要由CSDN通过智能技术生成

一、单阈值处理

情景:提取图片中的RGB=[255,0,19],误差在+-20,由于rgb通道为[0-255],所以为单阈值。


一开始是想到用循环来判断某点像素是否满足要求:

x=[255,0,19];

imshow(f)
fsize=size(f);
tic
for row=1:fsize(1)
    for colon=1:fsize(2)
        a=0;
        for page=1:3
            if abs(double(f(row,colon,page))-x(page))<20
                a=a+1;
            end
        end

        if a<3
            for page=1:3
                f(row,colon,page)=uint8(0);
            end
        else
            for page=1:3
                f(row,colon,page)=uint8(255);
            end
        end
        
    end
end
toc

    此算法还是简单一点的,只是得出给定RGB的左右20,并不能自定范围,然而仍旧需要0.35秒左右。

    查了很多论坛,博客都说循环可以用并行来做,但是使用parfor报了一对错,并没有成功,而且就算并行,电脑8核,也需要0.15秒,速度仍太慢。

    后来明白原因,实

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值