Что такое эффект мозаики в MATLAB?

Опубликовано: 21 Февраля, 2023

MATLAB — это высокопроизводительный язык, который используется для манипулирования матрицами, выполнения технических вычислений, построения графиков и т. д. Он расшифровывается как Matrix Laboratory. С помощью этого программного обеспечения мы можем придать изображению эффект мозаики. Это делается путем разрыва исходного изображения и последующего выделения пикселей новому изображению с помощью циклов.

Tiling Effect is dividing an image into grid and showing the grids separately by shifting them in random direction by random amount.

Шаги для создания эффекта мозаики на изображении:

  1. Прочитайте изображение с помощью команды imread.
  2. Создайте переменную imageWithEffect, в которой будет храниться изображение с мозаичным эффектом.
  3. Объявите размеры строк и столбцов, чтобы получить плитки разных размеров, а также объявите размеры плиток, чтобы создать промежутки между плитками.
  4. Перебираем вложенные циклы while, в которых мы устанавливаем размеры плитки и добавляем размеры исходного изображения в переменную imageWithEffect.
  5. Закройте петли и покажите финальное изображение.

Matlab




% MATLAB code for 
% Read original Image
original = imread("GeeksforGeeks.jpg");
  
% Create a new imageWithEfect variable
imageWithEffect = uint8(zeros(size(original)));
  
i=1;
j=1;
row=0;
col=0;
m=1;
n=1;
  
% Changing the row size and column size 
% value to obtain tiles of different sizes
rowSize = 20;
colSize = 35;
  
% Changing the tile row size and tile column size 
% value to create gaps between tiles
tileRowSize = 3;
tileColSize = 5;
  
  
% Nested While loop to allocate imageWithEffect required tiles
while(i < size(original,1))
    while( (m+i+row) < size(original,1) && (n+j+col) < size(original,2) )
        imageWithEffect(m+i:m+i+row,n+j:n+j+col,:) = original(i:i+row,j:j+col,:);
          
        % using rand function to vary size of tiles
        m=ceil(rand(1)*tileRowSize);
        n=ceil(rand(1)*tileColSize);
        col=ceil(rand(1)*colSize);
        row=ceil(rand(1)*rowSize);
        j=j+col;
    end
    i = i + row;
    j =1;
end
  
% Showing original image and image with tile effect
imshow(original), title("Original");
figure,imshow(imageWithEffect), title("Image With Tiling Effect");

Выход:

Входное изображение:

Выходное изображение (изображение с эффектом мозаики):