Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otchet_po_2_labe_versia2.docx
Скачиваний:
8
Добавлен:
01.04.2025
Размер:
617 Кб
Скачать
☆

Xlabel, ylabel - обозначение осей

title – заголовок графика

plot - вывод графика в линейном масштабе

wavread - считывание данных из файла формата wav

wavwrite - записывание данных в файл формата wav

subplot - в одном графическом окне 3 окна с графиками.

Проверка работоспособности алгоритма:

Рисунок 3 – суммарный график нормированных к 1 сигналов.

Рисунок 4 – суммарный график сигналов(речь нормирована к 0.2, музыка к 1)

Рисунок 5 – суммарный график сигналов (речь нормирована к 1,музыка к 0.2)

Вывод: в результате преобразований появились новые звуковые файлы. Для первого случая (рисунок 1), можно выделить, что хорошо слышно, как речь, так и музыку, для 2 случая (рисунок 2), что речь практически не слышна за музыкой, а для 3 случая (рисунок 3), что речь отчетливее слышна, нежели музыкальный фрагмент.

Задание 4. Загрузить фрагмент сигнала, соответствующий участку звука, в формате wav. Сформировать новый массив, состоящий из нечетных элементов исходного массива. Записать результат преобразования с частотой дискретизации равной частоте дискретизации исходного сигнала. Построить графики всех сигналов, полученных при выполнении задания. Прослушать исходный сигнал и результат преобразования. Сделать выводы.

Решение

Листинг 4 представляет собой реализацию алгоритма в системе MatLab.

Листинг 4.

clc

clear

[X,f,bits]=wavread('C:\Users\Леха\Desktop\1.wav');

w=length(X);

i=1

j=1

while i<w

Y(j)=X(i);

i=i+2;

j=j+1;

end;

hold on

plot(X,'-k')

plot(Y,'-b')

hold off

wavwrite(Y,f,bits,'C:\Users\Леха\Desktop\1new.wav')

Здесь использованы стандартные функции:

wavwrite – запись данных в формат wav

length(X)-определяет длину массива

Проверка работоспособности алгоритма:

Результатом выполнения программы будут 2графика, который можно увидеть на рисунки 6. Черным цветом обозначен исходный файл, синим обработанный

Рисунок 6 – Полученный график функций для задания 2

Вывод: данный алгоритм позволяет сформировать новый массив, состоящий из нечетных элементов исходного массива. При прослушивании полученного медиа-файла, темп музыки больше, нежели чем и у исходного в 2 раза.

Задание 5. Загрузить фрагмент сигнала, соответствующий участку звука, в формате wav. Сформировать новый массив, вставив между каждым отсчетом нулевое (новый массив должен быть в 2 раза длиннее исходного). Записать результат преобразования с частотой дискретизации равной частоте дискретизации исходного сигнала. Построить графики всех сигналов, полученных при выполнении задания. Прослушать исходный сигнал и результат преобразования. Сделать выводы.

Решение

Листинг5 представляет собой реализацию алгоритма в системе MatLab.

Листинг 5.

clc

clear

[X,f,bits]=wavread('C:\Users\Леха\Desktop\1.wav');

w=length(X);

i=1

j=1

while i<w

Y(j)=X(i);

i=i+1;

j=j+2;

end;

hold on

plot(X,'-k')

plot(Y,'-b')

hold off

wavwrite(Y,f,bits,'C:\Users\Леха\Desktop\111111.wav')

Здесь использованы стандартные функции:

wavwrite – запись данных в формат wav

length(X)-определяет длину массива

Проверка работоспособности алгоритма:

Результатом выполнения программы будут графики, который можно увидеть на рисунки 7. Черным цветом обозначен исходный файл, синим обработанный

Рисунок 7 – Полученный график функций для задания 5

Вывод: данный алгоритм позволяет сформировать новый массив, состоящий из элементов данного массива, но при этом после каждой записи старого массива добавляется ноль. При прослушивании полученного медиа-файла, темп музыки меньше, нежели чем и у исходного в 2 раза.

Задание 6. Загрузить фрагмент сигнала, соответствующий участку звука, в формате wav. Определить визуально границы между звуками (1-2). Сформировать новый массив, в котором звуки поменяны местами. Записать результат преобразования. Построить графики всех сигналов, полученных при выполнении задания. Прослушать исходный сигнал и результат преобразования. Сделать выводы.

Решение.

Листинг 6 представляет собой реализацию алгоритма в системе MatLab.

Листинг 6.

[X,Fs,bits]=wavread('C:\Users\Леха\Desktop\33.wav');

figure(1);

w=length(X)

plot(X);

for i=800:1650

a(i-799)=X(i);

end;

for i=1:800

a(i+799)=X(i);

end;

for i=1651:w

a(i)=X(i);

end;

figure(2);

plot(a);

wavwrite(a,Fs,bits, 'C:\Users\Леха\Desktop\33_n.wma')

Проверка работоспособности алгоритма:

Результатом выполнения программы будут графики, рисунок 8 график исходного файла. Рисунок 9 обработанного файла.

Рисунок 8 – Полученный график функций для задания 6

Рисунок 9 – Полученный график функций для задания 6

Задание 7. Загрузить в массив X фрагмент сигнала, соответствующий участку звука, в формате wav. Сформировать новый массив, элементы которого:

Записать результат преобразования. Построить графики всех сигналов, полученных при выполнении задания. Прослушать исходный сигнал и результат преобразования. Сделать выводы.

Решение.

Листинг 7 представляет собой реализацию алгоритма в системе MatLab.

Листинг 7.

clc

clear

[x,Fs,bits]=wavread('C:\Users\Леха\Desktop\11.wav');

w=length(x)

for i=1:w

if x(i)>0; y(i)=1;

else if x(i)==0 y(i)=0;

else y(i)=-1;

end;

end;

end;

figure(1);

% plot(x);

figure(2);

% stem(y);

wavwrite(y,8000,16, 'C:\Users\Леха\Desktop\cedmoe16bit.wma')

Здесь использованы стандартные функции:

plot - вывод графика в линейном масштабе

wavread - считывание данных из файла формата wav

wavwrite - записывание данных в файл формата wav

stem – вывод графика в линейном масштабе

Комментирование листинга: вводим цикл от от одного до N, а дальше проверяем условия, поставленные в задании, выводим графики и записываем результат преобразований.

Проверка работоспособности алгоритма:

Результатом выполнения программы будут графики, рисунок 10 график исходного файла. Рисунок 11 обработанного файла.

10 – Полученный график функций для задания 7

Рисунок 11 – Полученный график функций для задания 7

Вывод: результат преобразований: исходная звуковая дорожка с характерным звуком «шипения», что вызвано выводом условий.

Задание 8. Загрузить изображение. Отобразить изображение, используя 256 уровней яркости. Отобразить изображение, используя диапазон [100 200]. Сделать выводы.

Решение.

Листинг 8 представляет собой реализацию алгоритма в системе MatLab.

Листинг 8.

clc

clear

D=imread('D:\учёба\Информатика\2 симестр\2лаба\каритинки\2.bmp');

figure(1);

imshow(D,[100 200])

Здесь использованы стандартные функции:

imread - считывание данных об изображении из файла. X – значения интенсивностей

figure(1); imshow(X, [100 200]) - отображение изображения, представленного в виде массива X, для переменной low задает минимальное значение массива X(100), а для переменной high – максимальное(200).

Проверка работоспособности алгоритма:

Рисунок 12 – исходное изображение.

Рисунок 13 – преобразованное изображение.

Вывод: изображение кардинально изменилось, а все из-за того, что мы выбрали минимальное значение массива Х 100, а максимальное 200.

Задание 9. Загрузить изображение. Создать новый массив, состоящий из:

а) четных строк исходного массива;

б) четных столбцов исходного массива;

в) элементов, расположенных на пересечении четных столбцов и четных строк исходного массива.

Отобразить все изображения, полученные при выполнении задания, используя 256 уровней яркости. Сохранить полученные изображения. Сделать выводы.

Решение.

а) Листинг 9 представляет собой реализацию алгоритма в системе MatLab.

Листинг 9.

clc

clear

X=imread('D:\pic\1j.jpg');

[m n k]=size(X)

j=1;

i=1;

while j<m

A(i,:,:)=X(j,:,:);

j=j+2;

i=i+1;

end

imshow(A)

imwrite(A,'D:\pic\5newA.jpg')

Здесь использованы стандартные функции:

imread - считывание данных об изображении из файла. X – значения интенсивностей

imshow- отображение изображения, представленного в виде массива

Комментирование листинга: считываем файл командой imread, далее узнаем длину вектора Х, задаем цикл с постусловием, где i, j номера строк. Выводим полученное изображение.

Проверка работоспособности алгоритма:

Исходное изображение Рисунок 14

Рисунок 14

Рисунок 15 – изображение, массив которого состоит из четных строк исходного массива.

б) Листинг 10 представляет собой реализацию алгоритма в системе MatLab.

Листинг 10.

clc

clear

X=imread('D:\pic\1j.jpg');

[m n k]=size(X)

j=1;

i=1;

while j<m

A(:,i,:)=X(:,j,:);

j=j+2;

i=i+1;

end

imshow(A)

imwrite(A,'D:\pic\5newB.jpg')

функции:

imread - считывание данных об изображении из файла. X – значения интенсивностей

imshow- отображение изображения, представленного в виде массива

Комментирование листинга: данный листинг отличается от предыдущего лишь тем, что i и j теперь столбцы.

Проверка работоспособности алгоритма:

Исходное изображение Рисунок 16

Рисунок 16

Рисунок 17 – изображение, массив которого состоит из четных столбцов исходного массива.

Рисунок 17

в) Листинг 11 представляет собой реализацию алгоритма в системе MatLab.

Листинг 11.

clc

clear

X=imread('D:\pic\1j.jpg');

[m n k]=size(X)

j=1;

i=1;

while j<m

A(:,i,:)=X(:,j,:);

j=j+2;

i=i+1;

end

j=1;

i=1;

while j<m

C(i,:,:)=A(j,:,:);

j=j+2;

i=i+1;

end

imshow(C)

imwrite(C,'D:\pic\5newC.jpg')

Здесь использованы стандартные функции:

imread - считывание данных об изображении из файла. X – значения интенсивностей

imshow- отображение изображения, представленного в виде массива

Комментирование листинга: теперь i и j – это как строки, так и столбцы.

Проверка работоспособности алгоритма:

Исходное изображение Рисунок 18

Рисунок 18

Рисунок 19 – изображение, массив которого состоит из элементов, стоящих на пересечении четных строк и столбцов исходного массива.

Рисунок 19 – изображение, массив которого состоит из элементов, стоящих на пересечении четных строк и столбцов исходного массива.

Вывод: данные алгоритмы позволяют изменять изображение по каким-либо заданным условиям задачи.

Задание 10. Загрузить изображение. Осуществить зеркальное отображение:

а) по горизонтали;

б) по вертикали;

в) относительно основной диагонали.

Отобразить все изображения, полученные при выполнении задания, используя 256 уровней яркости. Сохранить полученные изображения. Сделать выводы.

Решение.

а) Листинг 12 представляет собой реализацию алгоритма в системе MatLab.

Листинг 12.

clc

clear

X=imread('D:\pic\1j.jpg');

[m n k]=size(X)

u=m+1

for i=1:m/2

F=X(u-i,:,:);

X(u-i,:,:)=X(i,:,:);

X(i,:,:)=F;

end

imshow(X)

imwrite(X,'D:\pic\10B.jpg')

Здесь использованы стандартные функции:

imread - считывание данных об изображении из файла. X – значения интенсивностей

imshow- отображение изображения, представленного в виде массива

fliplr - переворачивает матрицу «задом на перед»; эквивалентно А(:,end:-1:1)

imwrite - запись изображения в файл

Комментирование графика: все крайне просто: считываем график и переворачиваем.

Проверка работоспособности алгоритма:

Исходное изображение Рисунок 20

Рисунок 20

Рисунок 21 – зеркальное отражение исходного изображения.

Рисунок 21

б) Листинг 13 представляет собой реализацию алгоритма в системе MatLab.

Листинг 13.

clc

clear

X=imread('D:\pic\1j.jpg');

[m n k]=size(X)

u=n+1

for i=1:n/2

F=X(:,u-i,:);

X(:,u-i,:)=X(:,i,:);

X(:,i,:)=F;

end

imshow(X)

imwrite(X,'D:\pic\10B.jpg')

Здесь использованы стандартные функции:

imread - считывание данных об изображении из файла. X – значения интенсивностей

imshow- отображение изображения, представленного в виде массива

flipud - переворачивает матрицу «вверх ногами»; эквивалентно А(end:-1:1,:)

imwrite - запись изображения в файл

Проверка работоспособности алгоритма:

Исходное изображение Рисунок 22

Рисунок 22

Рисунок 23 – зеркальное отражение исходного изображения.

Рисунок 23

в) Листинг 14 представляет собой реализацию алгоритма в системе MatLab.

Листинг 14.

clc

clear

X=imread('D:\pic\r.jpg');

[m n k]=size(X)

u=n+1

R=X

i=1

j=1

while i<m+1

j=i

while j<n+1

F=X(i,j,:);

X(i,j,:)=X(j,i,:);

X(j,i,:)=F;

j=j+1;

end

i=i+1;

end

imshow(X)

imwrite(X,'D:\pic\10C.jpg')

Здесь использованы стандартные функции:

imread - считывание данных об изображении из файла. X – значения интенсивностей

imshow- отображение изображения, представленного в виде массива

Проверка работоспособности алгоритма:

Исходное изображение Рисунок 24

Рисунок 24

Рисунок 25 – зеркальное отражение исходного изображения (относительно основной диагонали)

Рисунок 25

Вывод: данные алгоритмы позволяют отражать изображение по разным условиям.

Задание 11. Загрузить изображение. Инвертировать цвета. Отобразить все изображения, полученные при выполнении задания, используя 256 уровней яркости. Сохранить полученные изображения. Сделать выводы.

Решение.

Листинг 15 представляет собой реализацию алгоритма в системе MatLab.

Листинг 15

clc

clear

X=imread('D:\pic\1j.jpg');

A(:,:,:)=255-X(:,:,:);

imshow(A)

imwrite(A,'D:\pic\11.jpg')

Здесь использованы стандартные функции:

imread - считывание данных об изображении из файла. X – значения интенсивностей

imshow- отображение изображения, представленного в виде массива

Проверка работоспособности алгоритма:

Рисунок 26 – исходное изображение

Рисунок 26

Рисунок 27 – изображение с инвертированными цветами

Рисунок 27

Вывод: в массиве изображения 255- соответствует белому цвету, 0- черному, поэтому довольно просто достигается инверсия цветов: отняв от 255 исходный массив, получим инвертированное изображение.

Задание 12. Сформировать изображение, размерностью 128х128, представляющее собой:

а) черный квадрат с белой основной диагональю;

б) белый квадрат с черной побочной диагональю;

в) переход цветов от белого в верхнем левом углу к черному в нижнем правом углу.

Отобразить все изображения, полученные при выполнении задания, используя 256 уровней яркости. Сохранить полученные изображения. Сделать выводы.

Решение.

а) Листинг 16 представляет собой реализацию алгоритма в системе MatLab.

Листинг 16.

clc

clear

X(128,128,3)=0

[m n k]=size(X)

i=1

j=1

while i<m

X(i,j,:)=255;

i=i+1;

j=j+1;

end

imshow(X)

imwrite(X,'D:\pic\12A.jpg')

Проверка работоспособности алгоритма:

Рисунок 27 - черный квадрат с белой основной диагональю

б) Листинг 17 представляет собой реализацию алгоритма в системе MatLab.

Листинг 17.

clc

clear

X(333,333)=0;

[m n]=size(X);

p=0;

u=0.5/m

for i=1:m

for j=1:n

X(i,j)=p;

p=p+u;

end;

p=i*u

end;

imshow(X)

imwrite(X,'D:\pic\12C.bmp')

Проверка работоспособности алгоритма:

Рисунок 28 - белый квадрат с черной побочной диагональю

в) Листинг 17 представляет собой реализацию алгоритма в системе MatLab.

Листинг 17.

clc

clear

c=zeros(128,128);

[m n]=size(c);

n1=0;

k=0.5/m

for i=1:m

for j=1:n

n1=n1+k;

c(i,j)=n1;

end;

n1=i*k;

end;

imshow(c)

Здесь использованы стандартные функции:

imread - считывание данных об изображении из файла. X – значения интенсивностей

imshow- отображение изображения, представленного в виде массива

Проверка работоспособности алгоритма:

Рисунок 29 – Градиент от черного к белому.

Задание 13. Загрузить изображение. Сохранить изображение в новый файл, не изменяя количество пикселей, но уменьшив размер изображения.

Решение.

Листинг 18 представляет собой реализацию алгоритма в системе MatLab.

Листинг 18.

clc

clear

X=imread('C:\ Desktop\Без.bmp');

y=im2uint8(X)

imwrite(y,'C:\ Desktop\Бекуз.bmp')

Здесь использованы стандартные функции:

imread - считывание данных об изображении из файла. X – значения интенсивностей

imwrite - записывает данные в файл формата wav

y=im2uint8(X) - в массив y записывается результат преобразования в формате uint8 данных, которые были записаны в массиве X

Проверка работоспособности алгоритма:

Вывод: в результате того, что мы использовали команду y=im2uint8(X), тем самым перезаписав изображение в формате uint8, мы добились уменьшения размера. (Исходный файл - 5,52 КБ (5 662 байт); полученный файл - 40,1 КБ (41 078 байт)).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]