• 去红眼不完善 MATLAB 代码


    [FileName,PathName] = uigetfile('*.jpg');

    imgdata = imread(FileName);

    rgb = imgdata;

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    rgb = im2double(rgb);

    r = rgb(:,:,1);

    g = rgb(:,:,2);

    b = rgb(:,:,3);

    num = 0.5*( (r - g) + ( r - b ) );

    den = sqrt( (r - g).^2 + (r-b).*(g-b) );

    theta = acos(num ./ (den + eps));

    H=theta;

    H(b>g)=2*pi-H(b>g);

    H=H/(2*pi);

    num=min(min(r,g),b);

    den=r+g+b;

    den(den==0)=eps;

    S=1-3.*num./den;

    H(S==0)=0;

    I=(r+g+b)/3;

    %Combine all three results into an hsi image.

    [width,height] = size(rgb);

    height = height/3;

    for i=1:width

        for j = 1:height

            h = H(i,j);

            s = S(i,j);

            if s>0.3

                if h < 3.1415926/4

                    if h > -3.1415926/4

                        S(i,j,:) = 0;

                    end

                end

                      %  rgb11(i,j,:) = I(i,j);

                

            end

            

        end

    end

    hsi=cat(3,H,S,I);

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    H=hsi(:,:,1)*2*pi;

    S=hsi(:,:,2);

    I=hsi(:,:,3);

    %Implement the conversion equations.

    R=zeros(size(hsi,1),size(hsi,2));

    G=zeros(size(hsi,1),size(hsi,2));

    B=zeros(size(hsi,1),size(hsi,2));

    % RG sector (0<=H<2*pi/3).

    idx=find((0<=H)&(H<2*pi/3));

    B(idx)=I(idx).*(1-S(idx));

    R(idx)=I(idx).*(1+S(idx).*cos(H(idx))./cos(pi/3-H(idx)));

    G(idx)=3*I(idx)-(R(idx)+B(idx));

    %BG sector (2*pi/3<=H<4*pi/3).

    idx=find((2*pi/3<=H)&(H<4*pi/3));

    R(idx)=I(idx).*(1-S(idx));

    G(idx)=I(idx).*(1+S(idx).*cos(H(idx)-2*pi/3)./cos(pi-H(idx)));

    B(idx)=3*I(idx)-(R(idx)+G(idx));

    %BR sector.

    idx=find((4*pi/3<=H)&(H<=2*pi));

    G(idx)=I(idx).*(1-S(idx));

    B(idx)=I(idx).*(1+S(idx).*cos(H(idx)-4*pi/3)./cos(5*pi/3-H(idx)));

    R(idx)=3*I(idx)-(G(idx)+B(idx));

    %Combine all three results into an RGB image. Clip to [0,1] to compensate for floating-point arithmetic rounding effects.

    rgb=cat(3,R,G,B);

    rgb=max(min(rgb,1),0);

    rgb11 = rgb;

    imshow(rgb11);

    figure(1);

    imshow(H);

    figure(2);

    imshow(I);

    figure(3);

    imshow(S);

  • 相关阅读:
    4.9cf自训9..
    数位dp-入门模板题 hdu2089
    熟能生巧 汽车停车入位技巧解析-倒车入库--侧边停车
    MyBatis参数传入集合之foreach动态sql
    jquery如何判断checkbox(复选框)是否被选中
    Mybatis关联查询(嵌套查询)
    Mysql 分页语句Limit用法
    $.ajax返回的JSON格式的数据后无法执行success的解决方法
    JavaWeb学习总结(十二)——Session
    Spring MVC中Session的正确用法之我见
  • 原文地址:https://www.cnblogs.com/signal/p/2435941.html
Copyright © 2020-2023  润新知