图像分解1

通过滤波器把图像分成结构层(包含图像的大部分信息)和纹理层(包含图像的纹理和噪声)

https://github.com/drakeguan/cp11fall_project1

全部文件见这个链接,这是一个边缘增强的程序,通过分解得到纹理层,然后乘上一个倍数,达到边缘增强的效果

我稍微改简化了他的主函数


filters = {
    'l0Minimization' 'C, 0.003';
    'wlsFilter' 'C, 0.1, 1.6';
    'bilateralFilter' 'C, [], 0, 1, 10, 0.2';
    'localExtrema' 'C, Y, 17';
    'domainTransform' 'C, 2, 0.4';
    'guidedFilter' 'Y, C, 2, 0.2^2';
};
% update/add path
for j=1:size(filters(:, 1))
    addpath(filters{j, 1});%下载上面github链接中的程序文件
end
I1 = imread('F:\enhancement\images\nighthouse.jpg');
% figure; imshow(I1),title('orignal image');
I = double(I1)/255;

G = rgb2gray(I);
YIQ = rgb2ntsc(I);
Y = YIQ(:, :, 1);
[height, width, channel] = size(I);
j = 6;%更改j选择滤波器1-6
expression = sprintf('%s(%s)', filters{j, 1}, filters{j, 2});
disp(['>>   applying the filter ' expression]);
% for each channel/component in input image
M = [];
 for k=1:channel
 % ex, localExtrema(I, 3)
 C = I(:, :, k);
 M(:, :, k) = eval(expression);
 end
 
D = I - M;%D是纹理层M是结构层I是原图
% show the smoothed image
figure;imshow(M);title('smoothed image');
% show the detail layer
figure;imshow(D+0.5);title('detail layer');
E = D*3 + M;
figure; imshow(E);title('output image');

图像的结构层(结构层越模糊,纹理层越清晰)

图像的纹理层,第一张是imshow(D)这样的纹理层是黑色背景,纹理不太容易观察到。第二张是imshow(D+0.5)加一个0.5纹理较为清晰(或者mat2gray(D)),并且很多论文,纹理层都是以这个效果显示。

还发现很多论文为了使纹理更明显,对它进行了gamma增强,【figure;imshow(D.^0.5+0.5);title('detail layer');】不知道除了物体边缘纹理外,其他的是不是噪声

最后把纹理层乘3再加上结构层,乘3是纹理让纹理更加突出,可以是别的数儿,这个分解主要可以用在图像去噪图像增强领域,对结构层进行亮度提升(gamma变换、SSR增强等),对纹理层进行去噪操作(应该也能使用这个程序中的滤波器对纹理层进行平滑去噪)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值