图像浮雕效果的实现

这是来自网上的一段matlab的实现:

img=imread('9.jpg'); 

size_info=size(img); 

height=size_info(1);

width=size_info(2); 

spec_img=zeros(height,width,3); 

for i=2:height-1 

    for j=2:width-1 

        spec_img(i,j,:)=double(img(i-1,j-1,:))-double(img(i+1,j+1,:))+128;

    end 

end 

imshow(spec_img/255); 

以上代码产生浮雕的效果,它使用图像的左上像素减去右下像素,再加上128;若要产生雕刻的效果,可使用以下代码:
spec1_img=zeros(height,width,3); 
for i=2:height-1
    for j=2:width-1
        spec1_img(i,j,:)=double(img(i+1,j+1,:))-double(img(i-1,j-1,:))+128; 
    end
end
imshow(spec1_img/255);
以Tulips.jpg为例,三幅图对比如下:

可以看出效果是达到了。
最后需要说明的是imshow函数里的那个除以255是干啥的,实际上是把RGB分量数值归一化到0-1的范围,由于已经是double型的了,所以imshow知道把图像如何显示出来。
如果用C语言实现以上算法,万万不可去除以255,否则显示出来的图像是漆黑一片,而应该将RGB分量数值clip到0-255之间。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值