24小时热门版块排行榜    

查看: 947  |  回复: 0

mh_chono

新虫 (初入文坛)

[求助] mean shift图像平滑算法bug求解

CODE:
function [ flt_img ] = msflt( img,sigma_s,sigma_r )
    k_constant = 1;%uniform kernel的常量
    sigma =0.1;%mean shift终止时的允许误差
    [r,c,p] = size(img);
    flt_img = zeros(r,c,p);
    %若输入图像是RGB彩色图像,将RGB图像转换成LAB颜色空间图像
    if p == 3
        if exist('applycform','file')
            img = applycform(img,makecform('srgb2lab'));
        else
            img = colorspace('Lab<-RGB',img);
        end
    end
   
    x = zeros(r*c,2+p);
    z = zeros(r*c,2+p);
    %将二维数据转换成一维数据
    if p == 3
        for i = 1:r
            for j = 1:c
                x((i-1)*c+j,:) = [i,j,img(i,j,1),img(i,j,2),img(i,j,3)];
            end
        end
    end
    if p == 1
        for i = 1:r
            for j = 1:c
                x((i-1)*c+j,:) = [i,j,img(i,j)];
            end
        end
    end
    %mean shift部分
    for i = 1:r*c
        
        pre_y = x(i,:);
        tmp_y = x(i,:);
        
        while 1 %计算某个点的收敛点
            pre_y = tmp_y;
            sum1 = zeros(1,p+2);
            sum2 = 0;
            axis_x = fix(tmp_y(1));
            axis_y = fix(tmp_y(2));
            for j = axis_x-sigma_s-1:axis_x+sigma_s+1        %计算偏移均值
                for k = axis_y-sigma_s-1:axis_y+sigma_s+1
                    if j > 0 && j <= r && k>0 && k <= c %&& j ~= fix((i-1)/c) + 1 && k ~= mod(i-1,c) + 1
                        m = (j-1)*c + k;
                        tmp1 = [pre_y(1)-x(m,1),pre_y(2)-x(m,2)]/sigma_s;
                        %tmp1 = [x(m,1),x(m,2)]/sigma_s;
                        %tmp1 = [x(i,1)-x(m,1),x(i,2)-x(m,2)]/sigma_s;
                        if p == 3
                            tmp2 = [pre_y(3)-x(m,3),pre_y(4)-x(m,4),pre_y(5)-x(m,5)]/sigma_r;
                        end
                        if p == 1
                            tmp2 = (pre_y(3)-x(m,3))/sigma_r;
                        end
                        tmp1 = tmp1.*tmp1;
                        tmp2 = tmp2.*tmp2;
                        if sum(tmp1(:)) <= 1 && sum(tmp2(:)) <= 1%采用uniform kernel
                            sum1 = sum1 + k_constant*x(m,:);
                            sum2 = sum2 + k_constant;
                        end
                    end
                end
            end
            tmp_y = sum1/sum2;
            tmp = tmp_y - pre_y;
            if abs(tmp) < sigma
                break;
            end
        end
        
        z(i,:) = tmp_y;
        a = fix((i-1)/c) + 1;
        b = rem(i-1,c) + 1;
        if p == 3
            flt_img(a,b,1) = tmp_y(3);
            flt_img(a,b,2) = tmp_y(4);
            flt_img(a,b,3) = tmp_y(5);
        end
        if p == 1
            flt_img(a,b) = tmp_y(3);
        end
        
    end
   
    if p == 3
        if exist('applycform','file')
            flt_img = applycform(flt_img,makecform('lab2srgb'));
        else
            flt_img = colorspace('RGB<-Lab',flt_img);
        end
    end
end

CODE:
%主函数
img = imread('cameraman.jpg');
T = img;
%img = img/255;
%flt_img = uint8(msflt(img,8,4));
flt_img = msflt(img,8,4);
figure;
imshow(img);
figure;
%imshow(flt_img);
imshow(mat2gray(flt_img));

回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 mh_chono 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[博后之家] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +3 ero8OE6tv9cu 2026-09-02 6/300 2026-09-02 23:59 by rM1TE0WVDIIY
[基金申请] 为什么资助数各大高校都创新高,自己申请怎么就这么难 +14 Kittylucky 2026-08-27 15/750 2026-09-02 19:35 by liumei0601
[基金申请] 科研人应该花精力去思考如何解决问题,而不是去凝练问题 +7 瞬息宇宙 2026-09-01 14/700 2026-09-02 17:33 by ma0526
[基金申请] 要骂人了,新模版改版就是要淡化问题凝练这种虚的东西,结果有个评委还在说凝练得不够 +9 瞬息宇宙 2026-08-31 17/850 2026-09-02 14:04 by anjeeshine
[基金申请] 基金系统什么内容也没有 30+4 winsaint 2026-08-27 10/500 2026-09-02 11:35 by 大不刘6
[基金申请] 学科评审组评审是指会评吗? +5 瞬息宇宙 2026-08-31 5/250 2026-09-02 10:13 by 雨冰共舞
[基金申请] 面上合作单位盖章 +6 ssyjh 2026-08-27 9/450 2026-09-01 20:01 by huagongfeihu
[基金申请] 面上函评意见出来了,像什么等级? 20+4 Tsingking1 2026-08-27 17/850 2026-09-01 19:51 by 超级无敌华子
[论文投稿] 小白求助 投论文要求的highlights应该如何写 5+3 l1963982152 2026-08-29 4/200 2026-09-01 09:04 by 北京莱茵编辑
[基金申请] 麻烦专家们看看评委们的意见(F口面上) +7 gdd2018 2026-08-28 12/600 2026-09-01 08:32 by 尼古拉斯小虫
[基金申请] 国社科又开始会评了,不知道这次命运如何 +7 雨打竹帘 2026-08-30 11/550 2026-08-31 23:16 by hittle2008
[基金申请] 基金未中,这种答复是模板吗? +6 zhaosm1982 2026-08-27 7/350 2026-08-31 21:18 by qdxxmc
[基金申请] 能否申诉? +7 echo8914667 2026-08-30 8/400 2026-08-31 17:00 by yihongxu
[基金申请] 29号明天会评吗 +4 笨笨唐 2026-08-28 4/200 2026-08-31 09:30 by huixian257
[基金申请] 为什么到现在没收到通知? +5 tannykie 2026-08-29 5/250 2026-08-30 21:05 by purplejack
[基金申请] 有没有仍没收到信息的 +7 德尚中行 2026-08-27 8/400 2026-08-30 20:52 by purplejack
[考博] 找导师 +6 yuanjiabao 2026-08-29 7/350 2026-08-30 14:40 by 生科新手
[基金申请] 我就是申请一个面上项目而已,这评审意见是按照杰青的条件评的吧? +6 gouxfjh 2026-08-28 11/550 2026-08-30 07:57 by gouxfjh
[基金申请] 国自然评审意见 +13 wangmingqi 2026-08-28 19/950 2026-08-29 10:22 by Poppy1104
[基金申请] 2026年叶企孙基金 +4 bud_bud 2026-08-27 7/350 2026-08-29 07:23 by foolishmani
信息提示
请填处理意见