zoukankan      html  css  js  c++  java
  • 去红眼不完善 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);

  • 相关阅读:
    这些简单优化能让你的Win10流畅很多
    win7系统登录界面背景怎么修改?
    如何在win7下通过easyBCD引导安装Ubuntu14.04
    为什么我的电脑打不开便签?
    打开Word为什么会出现感叹号呢???
    图像变换原理
    运行
    php、前端开发(网站建设)环境搭建
    zend studio面板功能
    zend studio汉化
  • 原文地址:https://www.cnblogs.com/signal/p/2435941.html
Copyright © 2011-2022 走看看