我有一个从保存imagesc功能获得的RGB图像,如下所示。如何细化/平滑图像中存在的边缘。
它由更锐利的边缘组成,我需要使它们平滑。我无法找到为RGB图像执行此操作的解决方案。而不是在图像中看到的阶梯效应,我想平衡边缘。请提前帮助谢谢。
答案 0 :(得分:1)
也许imresize
会对您有所帮助:
% here im just generating an image similar to yours
A = zeros(20);
for ii = -2:2
A = A + (ii + 3)*diag(ones(20-abs(ii),1),ii);
end
A([1:5 16:20],:) = 0;A(:,[1:5 16:20]) = 0;
subplot(121);
imagesc(A);
title('original')
% resizing image with bi-linear interpolation
B = imresize(A,100,'bilinear');
subplot(122);
imagesc(B);
title('resized')
修改强>
这里我调整大小+过滤+舍入:
% generates image
A = zeros(20);
for ii = -2:2
A = A + (ii + 3)*diag(ones(20-abs(ii),1),ii);
end
A([1:5 16:20],:) = 0;A(:,[1:5 16:20]) = 0;
subplot(121);
imagesc(A);
title('original')
% resizing
B = imresize(A,20,'nearest');
% filtering & rounding
C = ceil(imgaussfilt(B,8));
subplot(122);
imagesc(C);
title('resized')
答案 1 :(得分:1)
答案 2 :(得分:0)
如果您只是寻找更直的边缘,例如高程地图,您可以尝试contourf
。
cmap = colormap();
[col,row] = meshgrid(1:size(img,2), 1:size(img,1));
v = linspace(min(img(:)),max(img(:)),size(cmap,1));
contourf(col,row,img,v,'edgecolor','none');
axis('ij');
使用我生成的测试函数生成以下结果。