IDL RGB转HSI

在IDL里面有颜色空间转换函数 color_convert,但是不知道怎么提取分量,

pro rgbhsi
;读取影像
  envi_select,title='Choose Original Sorted MODIS Image',$
    fid=fid,dims=dims,pos=pos
  ENVI_FILE_QUERY, fid, dims=dims, NS = ns, NL = nl,NB = nb
  pos  = LINDGEN(nb)
  num_cols=dims[2]-dims[1]+1
  num_rows=dims[4]-dims[3]+1
  num_bands=n_elements(pos)
  num_pixels=num_cols*num_rows
  img=fltarr(num_cols,num_rows,num_bands)
  for k=0,num_bands-1 do img(*,*,k)=$
    envi_get_data(fid=fid,dims=dims,pos=pos[k])   
   R = img(*,*,0)
   G = img(*,*,1)
   B = img(*,*,2)   
    h  = fltarr(num_cols,num_rows)
    s  = fltarr(num_cols,num_rows)
    i1  = fltarr(num_cols,num_rows)
   ;RGB->HSI
   for i=0,num_cols-1 do begin
     for j=0,num_rows-1 do begin
   s(i,j) = 2.0/sqrt(6.0)*sqrt((R(i,j)-G(i,j))^2.0+(R(i,j)-B(i,j))*(G(i,j)-B(i,j)))
   i1(i,j) = (1.0/sqrt(3.0))*   (r(i,j)+g(i,j)+b(i,j))
   ct = !pi/2.0-atan((2.0*r(i,j)-g(i,j)-b(i,j))/(sqrt(3.0)*(G(i,j)-b(i,j))))
   if g(i,j) ge b(i,j) then begin
    H(i,j) = ct
   endif else begin
    H(i,j) = ct+!pi 
   endelse
      endfor
   endfor
   envi_write_envi_file,s,out_dt=4,out_name='D:\screen\image\result\test.img'

end

色调图
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值