找回密码
 注册
关于网站域名变更的通知
查看: 408|回复: 2
打印 上一主题 下一主题

求助:关于非局部均值滤波程序的问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-8-28 14:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
% 沿行插值0 P; y1 S1 H) e: s: _
Sd = cumsum(diff,1);  % 行叠加
+ p2 X1 O5 M9 [/ c3 R% 沿列插值
3 C: x9 i3 B% y# `Sd = cumsum(Sd,2);    % 列叠加
, X# h5 y  r( [0 ~6 U为什么要进行叠加?
9 ~. ^- O- o1 h. g5 N: D6 m1 M还有这一步也不是很明白,怎么就得到每个像素点的权值了
5 L5 Z" k* [( n9 G" o7 Y            SqDist = Sd(PatchSizeHalf+1:end-PatchSizeHalf,PatchSizeHalf+1:end-PatchSizeHalf)+Sd(1:end-2*PatchSizeHalf,1:end-2*PatchSizeHalf)-Sd(1:end-2*PatchSizeHalf,PatchSizeHalf+1:end-PatchSizeHalf)-Sd(PatchSizeHalf+1:end-PatchSizeHalf,1:end-2*PatchSizeHalf);% w/ p5 ~* c. r- ~+ e: |+ t* e
  • TA的每日心情

    2019-11-20 15:22
  • 签到天数: 2 天

    [LV.1]初来乍到

    3#
    发表于 2020-8-28 16:00 | 只看该作者
    分享这个源代码,应该有用
    - R. r; @5 _) C$ ]5 v
    3 n4 F' a: X, S3 E& |2 x# p! Jfunction DeNimg = Non_Local_Means(Nimg,PSH,WSH,Sigma)
    , W7 I7 W! X  ^8 \7 A) z% Non_Local_Means滤波器
    . r' Z! a; T6 m& {%函数输入:
    1 K0 m" t1 l9 Y* }- V%         Nimg:  输入的图像矩阵 + 带噪声的
    6 Q4 o4 R- J! d5 N4 ^& B) I; z2 f8 r%         PSH:  扩展窗尺寸大小
      Z4 X* `$ n6 b; h  Z3 E3 r6 @1 ?%         WSH: 窗尺寸大小1 i6 m3 I8 A: B" c
    %         Sigma:方差3 R/ P/ l6 ]; {+ f7 x
    %函数输出:
      J" z8 V8 X: [0 p$ H9 o%         DeNimg: 重构滤波图像9 {0 z" b/ [; w$ a' I/ W( ]

    1 K7 w! |2 e+ d/ eif ~isa(Nimg,'double'); d" [8 F3 l) o% K# O
        Nimg = double(Nimg)/255;6 q9 |1 r  E1 H- ]) u
    end! X# Q, o- x/ T3 e, U* d6 {4 z+ F

    4 n* l5 \3 k9 x# R0 Q8 s; p1 s% 图像维数) w# ?8 }1 z5 a0 k# D& d+ L
    [Height,Width] = size(Nimg);+ F) q: o2 ^0 t, |( f& \2 i1 u( k! `+ E
    u = zeros(Height,Width); % 初始化去噪图像矩阵0 J  x" }. N) S5 N. y: b; X
    M = u; % 初始化权值矩阵
    # d5 E; [/ o' H. lZ = M; % 初始化叠加权值 accumlated weights
    & R9 {( [. l. M% T4 A* T7 N% 避免边界效应
    9 I* w& V4 w2 t9 _# SPP = padarray(Nimg,[PSH,PSH],'symmetric','both');
    ! {# T6 y8 D4 l2 u1 r1 VPW = padarray(Nimg,[WSH,WSH],'symmetric','both');' E4 s( s& j) K9 H* O5 }& X
    % padarray使用" a6 h# p4 ]# |# i0 _
    % A =' S2 v2 Q- k" H: }; [1 J9 O% Q  h
    %      1     3     4
    3 k+ F. s* D/ |0 x% y%      2     3     4
    / L" k- [. f& {# H%      3     4     5
    3 w+ m2 H6 f/ ]4 S5 g% r% B = padarray(A, 2 * [1 1], 0, 'both')$ n4 ~& |7 f1 f
    %      0     0     0     0     0     0     0
    ' v8 }# I2 a4 S9 F: M! Y%      0     0     0     0     0     0     00 v5 H, ]. ]! m
    %      0     0     1     3     4     0     0
    : u, }3 g; P2 s2 R* Q%      0     0     2     3     4     0     0
    3 e: c4 h& L/ r! a: h9 z" B%      0     0     3     4     5     0     0
    ' M. s& |1 W4 P' h$ ?" \: G%      0     0     0     0     0     0     0  b3 o4 m, I6 [" F! ^
    %      0     0     0     0     0     0     0' ~* z& c6 k8 I# |/ U. v
    % 主循环
    $ o, E6 ~% R5 e# b# @$ [for dx = -WSH:WSH
    4 Z4 x0 O( d0 r' r+ A4 V% |    for dy = -WSH:WSH% T/ m2 E% P$ I* L
            if dx ~= 0 || dy ~= 0
    0 |& Z% L; ]" y, w5 C/ ?            Sd = integral_img(PP,dx,dy);  % 插值图像
    5 X0 H4 S/ K; b7 _* Z2 J, i* k) {  h            % 获取对应像素点的平方差矩阵
    % V: c7 d+ S) ]            SDist = Sd(PSH+1:end-PSH,PSH+1:end-PSH)+Sd(1:end-2*PSH,1:end-2*PSH)-Sd(1:end-2*PSH,PSH+1:end-PSH)-Sd(PSH+1:end-PSH,1:end-2*PSH);         N7 v6 Y# x0 f/ v3 \
                % 计算每一个像素点的权值+ i& b# B, n& u, g! _; Z# M0 t
                w = exp(-SDist/(2*Sigma^2));. ]" b$ f) U) i, u$ A
                % 得到相应的噪声点
    * Z- k$ U3 b- |            v = PW((WSH+1+dx)WSH+dx+Height),(WSH+1+dy)WSH+dy+Width));: Q7 t$ ]1 W5 o7 d) v
                % 更新去噪图像矩阵
    : U- u1 z* U/ v! a            u = u+w.*v;8 ]  s: Y& Q9 w! e( D: H
                % 更新权值去噪图像矩阵
    ( U! h- }* |- g            M = max(M,w);8 ~3 e  P, o; z0 n* {# [
                % 更新叠加权值 accumlated weights
    ; ^# V' }9 b* A; L' s5 q, g6 A            Z = Z+w;
    $ J  y/ }0 o1 n3 g# A        end
    : I% l( z+ y- N% r6 A! M: K    end
    8 R$ B$ }$ d8 x8 a6 T4 H% Cend
    : l5 @# _5 ]" {# h7 ]% 重构图像        
    7 p0 c  m/ n2 b* H8 |- Uf = 1;
    3 P* T6 h* u- z: Zu = u+f*M.*Nimg;
    . [# V) C* l+ f3 u& _! \" Wu = u./(Z+f*M);6 c0 I4 P2 A# r5 H- o; K
    DeNimg = u; % 重构去噪图像; k" D) \2 \; b: l

    0 p+ c4 u- z) n+ ]% @5 j8 _function Sd = integral_img(v,dx,dy)- @( e% ~; W8 u
    % 根据平方差,插值图像
    6 q# R" T) d. K0 r& _! X4 {% 变换计算:tx = vx+dx; ty = vy+dy
    4 ^, h" C" ^7 J4 et = img_Shift(v,dx,dy);
    , c9 G4 X, c% Y. {) w5 I% 平方差图像
    7 t' h6 W1 K3 J5 b) _diff = (v-t).^2;# `( j" j" ?$ h2 k# B9 D
    % 沿行插值% A; A; D8 L1 l
    Sd = cumsum(diff,1);  % 行叠加' I2 u" b3 Z$ y6 z# r* A( K
    % 沿列插值# j/ a' L! Z9 _; X
    Sd = cumsum(Sd,2);    % 列叠加( \7 ]8 ?% U" [% G- l0 B

    # a/ K- B- c% y2 o# o: O( y5 Kfunction t = img_Shift(v,dx,dy)& P: ~6 q, ^3 Z1 ]. @. @& f  _8 h
    % 在xy坐标系下,进行图像变换操作
    2 V) d4 m5 }- w- a& {% b+ k! ^t = zeros(size(v));* {, m5 s6 B/ t+ L) e3 r
    type = (dx>0)*2+(dy>0);5 i+ X- X1 q  C1 x2 U3 }6 L
    switch type, l8 u& m& a- Q8 n# j/ ~. H7 E
        case 0 % dx<0,dy<0: 向右下方移动
    : t. H( q  F! W, Z. s( M        t(-dx+1:end,-dy+1:end) = v(1:end+dx,1:end+dy);* b3 J% i: y" E: G  }0 o
        case 1 % dx<0,dy>0: 向左下方移动
    * E+ D" ~0 P) R0 o( M        t(-dx+1:end,1:end-dy) = v(1:end+dx,dy+1:end);& d9 ~4 t9 o" h* {! y
        case 2 % dx>0,dy<0: 向右上方移动2 N' F4 l$ Z1 u
            t(1:end-dx,-dy+1:end) = v(dx+1:end,1:end+dy);$ e, K9 ^/ R" Q- e' H
        case 3 % dx>0,dy>0: 向左上方移动' S9 S' ~7 g7 m; E# |6 g# D
            t(1:end-dx,1:end-dy) = v(dx+1:end,dy+1:end);
    1 J* w' q$ j9 o6 B1 uend; u8 T& Y5 \, I  a1 e7 D
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-11-24 14:19 , Processed in 0.140625 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表