• 去红眼不完善 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);

  • 相关阅读:
    获取文件mime类型
    PHP的CURL
    PHP curl报错“Problem (2) in the Chunked-Encoded data”解决方案
    MySQL中的group_concat函数
    MYSQL批量修改表前缀与表名sql语句
    ubuntu18.04 无法连接有线
    ffmpeg接收udp输入的h264文件流,推流到rtmp服务器
    nginx-rtmp
    tf.image.crop_and_resize
    tf.reduce_sum
  • 原文地址:https://www.cnblogs.com/signal/p/2435941.html
Copyright © 2020-2023  润新知