0 / 0 / 0
Регистрация: 12.03.2014
Сообщений: 22
1

Обработать изображение усредняющим фильтром с крестообразной маской с размером скользящего окна 5 пи

09.06.2014, 14:32. Показов 3378. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста с лабой:
Обработать изображение "I02.bmp" усредняющим фильтром с крестообразной маской с размером скользящего окна 5 пикселей.
Вот то, что у меня вышло:
Функция:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function img2 = laba10_func(img1)
cursor = 5;
[X,Y,Z] = size(img1);
figure(1);
imshow (img1);
img2 = uint8(zeros(X,Y,Z));
tic
for z = 1:Z
for x = 1:X-cursor
for y = 1:Y-cursor
mas = img1 (x:x+cursor-1,y:y+cursor-1,z);
mas1 = diag(mas);
mas2 = [mas1(1,1);mas1(2,1);mas1(4,1);mas1(5,1)];
mas3 = diag(fliplr(mas));
arr = [mas3;mas2];
a = average(arr);
img2(x,y,z) = uint8(a);
end
end
end
t = toc;
disp(t);
figure(2);
imshow (img2);
end
Код программы:
Matlab M
1
2
3
4
5
clc;
clear;
img1=imread('I02.bmp');
img2=laba10_func(img1);
imwrite(img2, 'I02_out1.jpg');
Но препод сказал не правильно, помогите плиз
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.06.2014, 14:32
Ответы с готовыми решениями:

Обработать изображение медианным фильтром с крестообразной маской
Обработать изображение медианным фильтром с крестообразной маской с размером скользящего окна 13...

Гистограмма скользящего окна
Недавно я создавала тему, в которой в конечном итоге по графику скользило окно, и отображалось...

Метод скользящего окна
Помогите пожалуйста с заданием 1. Реализовать метод скользящего окна заданного в варианте...

Метод скользящего окна
День добрый! Подскажите пожалуйста как реализовать вот такое дело. Существует N значений...

13
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,237
09.06.2014, 15:29 2
Dimius555, под усредняющим имеется ввиду на основе среднего арифметического?
А препод не сказал,что именно не правильно?
0
0 / 0 / 0
Регистрация: 12.03.2014
Сообщений: 22
09.06.2014, 16:56  [ТС] 3
да
нет, он у нас не совсем нормальный, он сказал что что-то тут правильно, а в целом это не верно(
0
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,237
09.06.2014, 17:00 4
Dimius555, откуда алгоритм брали?

Не по теме:

Цитата Сообщение от Dimius555 Посмотреть сообщение
нет, он у нас не совсем нормальный, он сказал что что-то тут правильно, а в целом это не верно(
Привыкайте,преподы так часто будут выражаться :)

0
0 / 0 / 0
Регистрация: 12.03.2014
Сообщений: 22
09.06.2014, 17:12  [ТС] 5
Та получается я с товарищем делал ее, у него немного схожа с моей прога была, и на ее основе я попробовал сделать свою.

Добавлено через 2 минуты
Кстати, я посидел еще немного и написал вот это, но мне выдает неизвестную ошибку, в интернете нигде ее найти не могу, вот код:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function img2 = laba10_func(img1)
cursor = 7;
[X,Y,Z] = size(img1);
figure(1);
imshow (img1);
img2 = uint8(zeros(X,Y,Z));
tic
for z = 1:Z
for x = 1:X-cursor
for y = 1:Y-cursor
mas = img1 (x:x+cursor-1,y:y+cursor-1,z);
k = rot90(mas);
l = 5;
for i = 1:1:6
if i>= 4
c(i,1) = k(4,l);
l = l+1;
else
c(i,1) = k(4,i);
end
for j = 1:1:7
b(j,1) = mas(4,j);
end
end
arr = [c;b];
h = fspecial ('average', 5);
arr2 = imfilter (arr, h);
img2(x,y,z) = uint8(arr2);
end
end
end
t = toc;
disp(t);
figure(2);
imshow (img2);
end
Код программы:
Matlab M
1
2
3
4
5
clc;
clear;
img1=imread('I02.bmp');
img2=laba10_func(img1);
imwrite(img2, 'I02_out1.jpg');
0
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,237
09.06.2014, 17:41 6
Dimius555, код выделяйте специальными тегами,так будет нагляднее,сейчас постараюсь разобраться в вашем коде.

Добавлено через 20 минут
Зачем вам все эти циклы я так и не понял,но задать размеры окна для фильтра вы можете так:
Matlab M
1
w = fspecial('average', [5 5] ) ;
применить его,например так:
Matlab M
1
f = imfilter(I, w, 'replicate');
0
0 / 0 / 0
Регистрация: 12.03.2014
Сообщений: 22
09.06.2014, 17:57  [ТС] 7
и тогда оно будет нормально работать?

Добавлено через 3 минуты
получается выдает вот это:
??? Assignment has more non-singleton rhs dimensions than non-singleton
subscripts

Error in ==> laba10_func at 28
img2(x,y,z) = uint8(arr2);

Error in ==> Untitled6 at 4
img2=laba10_func(img1);
0
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,237
09.06.2014, 18:02 8
Dimius555, нет,я не могу сказать подойдет ли такой вариант к вашей задаче так как мне непонятен алгоритм применения этого фильтра и что такое крестообразная маска?
Кстати,зачем вы явно преобразовываете изображение к uint8?И для чего вы используете столько циклов и условий?

Добавлено через 3 минуты
Возьмите за основу самый простой вариант фильтра без маски:

Matlab M
1
2
3
4
5
6
7
8
9
10
function img2 =func10lab(img1)
imshow (img1);
w = fspecial('average', [5 5] ) ;
img2 = imfilter(img1, w);
tic
t = toc;
disp(t);
figure(2);
imshow (img2);
end
0
0 / 0 / 0
Регистрация: 12.03.2014
Сообщений: 22
09.06.2014, 18:07  [ТС] 9
ясно, буду пробовать делать сам, но спасибо за помощь)
0
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,237
09.06.2014, 18:10 10
Dimius555, как сделаете выкладывайте код,может еще кому-нибудь пригодится.
0
0 / 0 / 0
Регистрация: 12.03.2014
Сообщений: 22
09.06.2014, 18:10  [ТС] 11
ок)
0
0 / 0 / 0
Регистрация: 12.03.2014
Сообщений: 22
10.06.2014, 00:30  [ТС] 12
Функция:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
function img_out = laba10_func(img)
PIXEL = 5;
[X Y Z] = size(img);
figure(1) ;
imshow (img);
img_out = uint8 (zeros (X,Y,Z));
tic
for z = 1:Z
for x = 1:X-PIXEL
for y = 1:Y-PIXEL
wind = img (x:x+PIXEL-1,y:y+PIXEL-1,z);
k = rot90(wind);
l = 3;
for i = 1:1:4
if i>= 2
c(i,1) = k(2,l);
l = l+1;
else
c(i,1) = k(2,i);
end
for j = 1:1:5
b(j,1) = wind(2,j);
end
end
arr = [c;b];
w = fspecial('average', [5 5] ) ;
a = imfilter(arr, w);
img2 (X, Y, Z) = uint8(a);
end
end
end
t = toc;
disp(t);
end
Код программы:
Matlab M
1
2
3
4
5
clc;
clear;
img1=imread('I02.bmp');
img2=laba10_func(img1);
imwrite(img2, 'I02_out1.jpg');
Выдает ошибку:
??? Subscripted assignment dimension mismatch.
Error in ==> laba10_func at 28
img2 (X, Y, Z) = uint8(a);
Error in ==> Untitled6 at 4
img2=laba10_func(img1);
>>
Условие программы:
Обработать изображение "I02.bmp" усредняющим фильтром с крестообразной маской с размером скользящего окна 5 пикселей.
Как мне избавиться от ошибки?
0
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,237
10.06.2014, 08:47 13
Dimius555, можно было и в старой теме писать

В 28 строчке вы устанавливаете каждую компоненту определенного пикселя переменной a,которое не имеет однозначного значения так как являться массивом.
Повторюсь:если у вас есть алгоритм приведите его,чтобы всем стало понятно как делать,если его нет,тогда покажите то на основании чего ,вы делаете эти for,if.
0
5241 / 3569 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
10.06.2014, 21:12 14
вместо
img2 (X, Y, Z) = uint8(a);
напиши
img2 (x, y, z) = uint8(a);
0
10.06.2014, 21:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.06.2014, 21:12
Помогаю со студенческими работами здесь

как обработать зашумлённый сигнал усреднительным фильтром?
как обработать зашумлённый сигнал сигнал усреднительным фильтром? Нужна помощь!!!) вот скрипт...

Вычисление отсечки для скользящего окна по количеству дискретных элементов
Друзья, Направьте на путь истинный. Пытаюсь сообразить алгоритм для следующей задачи. Причем,...

Составить математическую модель работы СУЛТ (стабилизации уровня ложных тревог) по принципу «скользящего окна»
Ребята, кто может составить математическую модель работы СУЛТ( стабилизации уровня ложных тревог)...

Обработать изображение
Подскажите плиз кто может, есть такая проблемка: нужно написать прогу чтобы с монохромного...

Как обработать Gif-изображение
Приветствую, кодеры. Столкнулся с задачей соляризации Gif-изображения. Требуется работать с...

Как обработать нажатие на изображение в элементе listView?
Как все знают, listView делится на множество элементов, нажатия на них можно обработать... Но во...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru