我正在通過各種在線來源,試圖學習一些新的東西與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