我正在通过各种在线来源,试图学习一些新的东西与matlab。Matlab - 扩展函数替代
我可以在一个扩张的功能,如下图所示:
function rtn = dilation(in)
h =size(in,1);
l =size(in,2);
rtn = zeros(h,l,3);
rtn(:,:,1)=[in(2:h,:); in(h,:)];
rtn(:,:,2)=in;
rtn(:,:,3)=[in(1,:); in(1:h-1,:)];
rtn_two = max(rtn,[],3);
rtn(:,:,1)=[rtn_two(:,2:l), rtn_two(:,l)];
rtn(:,:,2)=rtn_two;
rtn(:,:,3)=[rtn_two(:,1), rtn_two(:,1:l-1)];
rtn = max(rtn,[],3);
它需要的参数是:max(img,[],3) %where img is an image
我想知道如果有人能上出现什么这个函数来完成,如果一些线索有一个更好的(或更少混淆的方式)来做到这一点?除了一个小的wiki entry,我似乎无法找到任何文件,因此要求您的帮助。
这可以通过imdilate
函数来实现吗?
出色答卷。感谢您的解释。对此,我真的非常感激。从imdilate函数返回的3D矩阵是否可以变平? – Reanimation
@Reanimation'imdilate'带有2D图像应该返回一个2D结果 - 你是否给它一个RGB图像或类似的东西? – Notlikethat
如果我加载月亮图像('img = double(imread('moon.tif'));')并检查它的大小,它会返回'(x,y)',但是如果我加载我的图像('img2 = double(imread('image_raw.jpg'));')它的大小是'(x,y,3)'...在我的测试图像上,imdilate正在返回一个3d,我认为......在另一个函数中, m试图添加imdilate到2d矩阵,这就是为什么它不开心。我在想,如果我可以将返回的3D残片压平成2D,它会起作用吗? – Reanimation