我有一个256x256的圖像,我想將其划分為4个128x128的塊,並將它们尋址為A1到A4.現在,我想分別呼叫它们並對其进行一些操作.我知道可以使用
blkproc
功能-但究竟如何?
我给維兹威兹打電话吗 這樣吗?
blkproc
我用什麼代替"?",如何處理建立的4个塊?
B=blkproc(I,[4 4],?)
- 5月前1 #
- 5月前2 #
blockproc
是blkproc
的新名稱 (已棄用).它可用於將功能應用於圖像中的每个塊.例如,如果您想將矩陣I划分為8x8的塊並計算每个塊的平均值,則可以這樣做:
然後B=blockproc(I, [8 8], @(x) mean(x.data(:)));
B是一个包含塊均值的矩陣。
這裏要註意两件事:
The specifier
[8 8]
指定塊的size,而不是塊的number。在傳遞给
blockproc
的函式之外,您無法訪問自身的塊 .如果您自己需要塊,則必须按照Adrien的建議进行操作:A1=I(1:128, 1:128); A2=I(129:256, 1:128); A3=I(1:128, 129:256); A4=I(129:256, 129:256);
当然,在實際程式中,您可能應该使用迴圈来完成此操作。
p如果
myImage
是您的256x256圖片,不是吗image_top_left = myImage(1:128,1:128); image_top_right = myImage(1:128,129:256); image_bottom_left = myImage(129:256,1:128); image_bottom_right = myImage(129:256,129:256);
?
- 5月前3 #
最好让您的程式適用於所有尺寸的圖像,而不仅仅是256 * 256。
[row, col]=size(your_image); mr = round(row/2); % median of rows mc = round(col/2); % median of columns % Now divide your image and call each of them separately and do what ever you want top_left = your_image(1:mr , 1:mc); top_right = your_image(1:mr , (mc+1):col); bot_left = your_image((mr+1):row , 1:mc); bot_right = your_image((mr+1):row , (mc+1):col); % final stage is to combining these parts again to return to its original shape Back_to_original = [top_left,top_right ; bot_left,bot_right];
%hope這將對您有用.
相似問題
- Matlab旋轉圖像而不使用旋轉matlabimageprocessinginterpolation2021-01-12 01:27
- matlab:使用双線性插值調整圖像大小,而無需調整大小imagematlabimageprocessinginterpolation2021-01-09 00:25
- matlab:OCR的字元重建和填充matlabimageprocessingocredgedetection2021-01-07 17:54
- arrays:我在將MATLAB代碼轉換為Python時遇到問题pythonarraysmatlabimageprocessing2020-12-29 03:56
- matlab:對齐已捕获的RGB和深度圖像matlabimageprocessingkinectimageregistration2020-12-27 03:55
自
blockproc
起 (以及已棄用的blkproc
)都是Image Processing Toolbox中的功能,我想我会添加一个基本的MATLAB解決方案,不需要其他工具箱...如果要將矩陣划分為子矩陣,一種方法是使用
mat2cell
分解矩陣並將每个子矩陣儲存在單元陣列的單元中.對於您的情况,語法如下所示:C
現在是2 x 2單元格陣列,每个單元格儲存I
的128 x 128子矩陣 .如果要對每个單元執行操作,則可以使用功能cellfun
.例如,如果要取每个子矩陣中值的平均值,則可以執行以下操作:第一个引數是匿名函式的函式控制代碼,该函式首先將每个子矩陣整形為列向量,然後取均值.輸出是每个子矩陣的平均值的2×2矩陣.如果您將函式傳遞给
cellfun
為每个單元建立不同大小或型別的輸出,然後cellfun
連線它们会遇到問题,並会引發錯誤:如果添加
..., 'UniformOutput', false);
到cellfun
的通话結束 ,則在上述情况下的輸出將改為2 x 2單元格陣列,其中包含對每个子矩陣執行操作的結果。