zoukankan      html  css  js  c++  java
  • matlab练习程序(表面模糊)

      关于表面模糊的文章我是搜遍互联网只找到下面这两篇:

      1.http://bbs.redocn.com/viewthread.php?tid=274838&extra=&page=1

      2.http://blog.csdn.net/maozefa/article/details/7710321

      第一篇原理比较清楚,不过没有代码;第二篇原理就不太清楚了,不过有代码,就看各位能不能看懂汇编了。

      关于表面模糊,和其他模糊不同的是,其他模糊一般整个图像只用一个模板矩阵,而表面模糊对每一个像素都需要建立一个模版矩阵,因此计算量要大很多。

      模版矩阵这样计算:w(i,j)=1-abs(x(i,j)-x(r+1,r+1))/(2.5*T)。其实我总感觉阿发伯的那篇文章的公式他给错了,第一篇文章才是正确的。

      解释一下:确定模糊模板有两参数。1.r是模板半径,那么整个模板矩阵就有(2*r+1)^2个像素;2.T是阈值,确定模板中对应不同像素有不同权重。w就是模版矩阵了。x(i,j)是当前模板选中的像素,x(r+1,r+1)是当前模板最中间的像素也就是当前图像选中的像素。

      也许上面的解释让人听的云里雾里的,不过没关系,下面结合代码就能很好的理解了。

    clear all;
    close all;
    clc;
    r=11;       %半径
    T=36;       %阈值
    w=zeros(2*r+1,2*r+1);
    
    img=imread('lena.jpg');
    img=double(img);
    [m n]=size(img);
    imshow(mat2gray(img));
    
    imgn=zeros(m+2*r+1,n+2*r+1);
    imgn(r+1:m+r,r+1:n+r)=img;
    
    imgn(1:r,r+1:n+r)=img(1:r,1:n);      %这里就用到了上一篇文章介绍的边界扩展
    imgn(1:m+r,n+r+1:n+2*r+1)=imgn(1:m+r,n:n+r);
    imgn(m+r+1:m+2*r+1,r+1:n+2*r+1)=imgn(m:m+r,r+1:n+2*r+1);
    imgn(1:m+2*r+1,1:r)=imgn(1:m+2*r+1,r+1:2*r);
    
    
    for i=r+1:m+r
        for j=r+1:n+r
    
            w=1-abs(imgn(i-r:i+r,j-r:j+r)-imgn(i,j))/(2.5*T);   %这里很关键
            for p=1:2*r+1
                for q=1:2*r+1              
                    if w(p,q) <=0
                        w(p,q)=0;
                    end
                end
            end
    
            s=w.*imgn(i-r:i+r,j-r:j+r);             %下面是普通的加权平均
            imgn(i,j)=sum(sum(s))/sum(sum(w));
      
        end
    end
    
    figure;
    img=imgn(r+1:m+r,r+1:n+r);
    imshow(mat2gray(img));

      下面是处理的效果:

    原图

    这里处理的效果

    photoshop中把半径设为11,阈值设为36处理的效果

      整体灰度虽然稍有不同,不过整体灰度嘛,呵呵,在matlab中加个mat2gray()就都一样了嘛。

  • 相关阅读:
    javascript高级编程笔记03(正则表达式)
    javascript高级编程笔记02(基本概念)
    javascript高级编程笔记01(基本概念)
    ExtJS4加载FormPanel数据的几种方式
    Extjs 更新数据集Ext.PagingToolbar的start参数重置的处理
    四川绵阳 晴
    四川绵阳 阴
    四川绵阳 晴
    在IntelliJ IDEA中添加repository模板
    List分组 用于客服对话分组场景
  • 原文地址:https://www.cnblogs.com/tiandsp/p/2756441.html
Copyright © 2011-2022 走看看