0

Matlab - 你好,我想组合两个相同大小(111x111)的二进制图像,但首先我想将图像分成 3 x 3 矩阵补丁(37 子矩阵),有两个条件:

1.如果图像 2矩阵值中的 3 x 3 块全为白色 (1),则结果矩阵 =图像 1矩阵,例如:

 image 1 patch:           image 2 patch:             result:
 1 1 0                       1 1 1                    1 1 0   
 1 0 1                       1 1 1                    1 0 1
 1 1 1                       1 1 1                    1 1 1

2. 否则,我想保留图像 1 中 3 x 3 块(索引 (2,2))的中心值,但图像 2中的另一个值

image 1 patch:             Image 2 patch :            result:
 0 0 0                       1 0 1                    1 0 1   
 0 0 0                       1 1 0                    1 0 0
 0 0 0                       1 0 1                    1 0 1

并做整个图像并将整个 3 x 3 补丁组合成结果图像(再次为 111x111)

到目前为止我的代码(使用 mat2cell):

clear;
clc;
I1 = imread('image1.bmp');
I2 = imread('image2.bmp');
TI1 = im2bw(I1); %Thresholding I1
TI2 = im2bw(I2); %Thresholding I2

%Mat2cell patch
cellTI1 = mat2cell(TI1, 3*ones(size(TI1,1)/3,1), 3*ones(size(TI1,2)/3,1))
cellTI2= mat2cell(TI2, 3*ones(size(TI2,1)/3,1), 3*ones(size(TI2,2)/3,1))

% Im Confused with the loop

result1 = ones(37,37);

for i=1:3
    for j=1:3
        for m=1:37
            for n=1:37
        if TI2{m,n} == [1 1 1;
                 1 1 1;
                 1 1 1]
             result1 = TI1(m,n);
        else
             result1 = [TI2{1,1}(1,1) TI2{1,1}(1,2) TI2{1,1}(1,3);
                        TI2{1,1}(2,1) TI1{1,1}(2,2) TI2{1,1}(3,2);
                        TI2{1,1}(3,1) TI2{1,1}(3,2) TI2{1,1}(3,3)];
        end
            end
        end

对不起我的英语不好,谢谢

4

0 回答 0