MATLAB - 通过比较3 x 3补丁(子矩阵)组合两个二进制图像

时间:2016-04-08 18:20:14

标签: image matlab image-processing submatrix binary-image

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

1.如果来自图像2 矩阵值的3 x 3色块全部白色(1),那么结果矩阵= image 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。另外,我想保持3 x 3色块(索引(2,2))的中心值来自图像1 ,但另一个值来自图像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

抱歉我的英语不好, 感谢

0 个答案:

没有答案