在将rgb转为hsi时,转出来的HSI图像会出现失真,上面有瑕疵,请问是什么原因导致的啊?

解决方案 »

  1.   

    liyinghua163:什么原因?
    laviewpbt:你代码写的有问题?
    liyinghua163:代码有什么问题呢?
    laviewpbt:你代码不贴出来谁知道那个地方不对呢,让大家帮你猜吗?这就是新手的问题很让人烦的原因:不会提问题。
      

  2.   

    估计是溢出的问题,一个byte最大只能255,255+1就是0了。
      

  3.   

    [rgb,map] = imread('PET1.png');
    rgb = ind2rgb(rgb,map);
    figure;
    imshow(rgb);
    rgb=im2double(rgb);
    r=rgb(:,:,1);
    g=rgb(:,:,2);
    b=rgb(:,:,3);
    %Implement the conversion equations.
    num=double(0.5*((r-g)+(r-b)));
    den=sqrt(double((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);
    H = H*180/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.
    H=double(H);
    S=double(S);
    I=double(I);
    hsi=cat(3,H,S,I);
    figure;
    imshow(hsi);
    不好意思,昨天忘贴代码了,这是我的代码,和网上的基本一样。但是显示出来的HSI有斑点啊?怎么办?
      

  4.   

    同意 了解过opencv 就轻而易举了