在IDL可以中也可以实现浮雕效果。原理很简单:把图象的一个象素和左上方的象素进行求差运算,并加上一个灰度。这个灰度就是表示背景颜色。
 
代码如下:
----------------------------------------
;$
; NAME      :
;     embossment
;
; PURPOSE :
;     对灰度图做浮雕处理
;
; CATEGORY:
;     Image Process
;
; CALLING SEQUENCE:
;      result = embossment(image = image)
;
; MODIFICATION HISTORY:
;     Written by: QQz, 2007-10-2
;$
Function embossment,image = image
;
compile_opt STRICTARR
;
Catch, error
IF error NE 0 THEN BEGIN
      Catch, /Cancel
      ok = Dialog_Message(!Error_State.Msg)
      RETURN,0
ENDIF
;
if size(image,/n_dim) ne 2 then begin
    print,'must 2D imge'
    return,0
endif
;
;背景值
background = 128
;
;创建左上点图像
uperleft = shift(image,1,1)
uperleft[*,0] = image[*,0]
uperleft[0,*] = image[0,*]
;
;当前像素值减去左上点像素值 再加上背景值
image = image - uperleft +background
;
return,1
End
--------------------------------------------------------------
限制 :只对灰度图处理,如果是rgb图像,就需要取其中一个通道或者用 0.3 * R + 0.59*G  + 0.11 *B 公式转为灰度,再用本函数
返回:如果成功返回1 ,失败返回0
调用例子:
READ_JPEG, FILEPATH('rose.jpg', SUBDIRECTORY=['examples', 'data']), image
image = reform(0.3*image[0,*,*] + 0.59*image[0,*,*]    +0.11*image[0,*,*])
r =    embossment(image = image)
if r then tv,image