码迷,mamicode.com
首页 > 编程语言 > 详细

otus算法

时间:2015-04-17 20:09:19      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:

晚上我来补充说明

先贴上代码备忘

function [ output_args ] = otus( IM )
%OTUS Summary of this function goes here
%   Detailed explanation goes here
[m,n,h]=size(IM);
GIM=rgb2gray(IM);%GIM为灰度图像
his=zeros(256,1);%定义一个256行1列的灰度直方图his
var=zeros(256,1);

%记录每一灰度值的点的个数
for i=1:m
    for j=1:n
        gray=GIM(i,j)+1;
        his(gray,1)=his(gray,1)+1;
    end
end

    
    
for yu=1:255
    left=0;%左边平均数
    left_num=0;%左边总数
    left_var=0;%左边方差
    
    right=0;%右边平均数
    right_num=0;%右边总数
    right_var=0;%右边方差
    
    for i=1:yu
        left=his(i,1)*i+left;
        left_num=left_num+his(i,1);
    end
     if left_num==0
            left=0;
        else
    left=left/left_num;
     end
    
    for j=yu+1:255
        right=his(j,1)*j+right;
        right_num=right_num+his(j,1);
    end
     if right_num==0
            right=0;
        else
    right=right/right_num;
     end
    
    %计算左右两边方差
    for i=1:yu
        if left_num==0
            left_var=0;
        else
        left_var=((i-left)*his(i,1)/left_num).^2+left_var;
        end
    end
    
    for j=yu+1:255
        if right_num==0
            right_var=0;
        else
        right_var=((j-right)*his(j,1)/right_num).^2+right_var;
        end
    end
    
    var(yu,1)=abs(right_var-left_var);
end

yu_max=find(var==max(max(var)));

for i=1:m
    for j=1:n
        if GIM(i,j)+1>yu_max
        GIM(i,j)=255;
        else
            GIM(i,j)=0;
        end
    end
end

imshow(GIM);
imwrite(GIM,‘吴启帆自己的otus.jpg‘)
end

 

otus算法

标签:

原文地址:http://www.cnblogs.com/PHPer-Wu/p/4435543.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!