Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.07.2016, 10:55   #1
irchick
 
Регистрация: 15.04.2016
Сообщений: 7
По умолчанию Image processing toolbox matlab задать для обработки сразу несколько картинок

Вопрос, как данный код загнать под обработку нескольких ихображений последовательно? например выбирать сразу 100 изображений, производить вычисления и заносить результат в ячейки таблицы? На изображениях происходит поиск окружности и вычисление ее радиуса и объема

Код:
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
[FileName, PathName]=uigetfile('*.bmp; *.jpg; *.gif', 'Open File'); %считываем изображение
if FileName~=0
rgb=imread(strcat(PathName, FileName));
 I=rgb2gray(rgb);
I=imcrop(I, [320 60 900 900]);
imshow(I);
 
text(732,501,'…',...
     'FontSize',7,'HorizontalAlignment','right')
hy=fspecial('sobel');
hx=hy';
Iy=imfilter(double(I), hy, 'replicate');
Ix=imfilter(double(I), hx, 'replicate');
gradmag=sqrt(Ix.^2+Iy.^2);
L=watershed(gradmag);
Lrgb=label2rgb(L);
se=strel('disk', 20);
Io=imopen(I, se);
Ie=imerode(I, se);
Iobr=imreconstruct(Ie, I);
Ioc=imclose(Io, se);
Iobrd=imdilate(Iobr, se);
Iobrcbr=imreconstruct(imcomplement(Iobrd), imcomplement(Iobr));
Iobrcbr=imcomplement(Iobrcbr);
fgm=imregionalmax(Iobrcbr);
 I2=I;
 I2(fgm)=255;
se2=strel(ones(5, 5));
 fgm2=imclose(fgm, se2);
 fgm3=imerode(fgm2, se2);
 fgm4=bwareaopen(fgm3, 20);
 I3=I;
 I3(fgm4)=255;
 bw=im2bw(Iobrcbr, graythresh(Iobrcbr));
D=bwdist(bw);
  DL=watershed(D);
  bgm=DL==0;
  gradmag2=imimposemin(gradmag, bgm | fgm4);
  L=watershed(gradmag2);
 I4=I;
  I4(imdilate(L==0, ones(3, 3))|bgm|fgm4)=255;
 Lrgb=label2rgb(L, 'jet', 'w', 'shuffle');
 grayimg = rgb2gray(Lrgb);
grayimg = imadjust(grayimg);
binar=im2bw(grayimg, 0.5)
binar=~binar
se = strel('disk',1);
bin = imopen(binar,se);
[B,L] = bwboundaries(bin);
stats = regionprops(L,'Centroid','EquivDiameter');
imshow(binar)
hold on
for k = 1:length(B)
 boundary = B{k};
 radius = stats(k).EquivDiameter/2;
 xc = stats(k).Centroid(1);
 yc = stats(k).Centroid(2);
 theta = 0:0.01:2*pi;
 Xfit = radius*cos(theta) + xc;
 Yfit = radius*sin(theta) + yc;
 plot(Xfit, Yfit, 'g');
 text(boundary(1,2)-15,boundary(1,1)+15, num2str(radius,3),'Color','r',...
  'FontSize',8);
 set(handles.text2, 'string', num2str(radius));
 vol=4*pi*radius*radius*radius/3;
 set(handles.text7, 'string', num2str(vol));
Пробовала сделать так

Код:
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
f=str2num(get(handles.edit37, 'String'));
d=str2num(get(handles.edit38, 'String'));
for k=f:d
    I=strcat('15min_',num2str(k),'jpg')
in=(d-f)
text(732,501,'…',...
     'FontSize',7,'HorizontalAlignment','right')
hy=fspecial('sobel');
hx=hy';
Iy=imfilter(double(I), hy, 'replicate');
Ix=imfilter(double(I), hx, 'replicate');
gradmag=sqrt(Ix.^2+Iy.^2);
L=watershed(gradmag);
Lrgb=label2rgb(L);
se=strel('disk', 20);
Io=imopen(I, se);
Ie=imerode(I, se);
Iobr=imreconstruct(Ie, I);
Ioc=imclose(Io, se);
Iobrd=imdilate(Iobr, se);
Iobrcbr=imreconstruct(imcomplement(Iobrd), imcomplement(Iobr));
Iobrcbr=imcomplement(Iobrcbr);
fgm=imregionalmax(Iobrcbr);
 I2=I;
 I2(fgm)=255;
se2=strel(ones(5, 5));
 fgm2=imclose(fgm, se2);
 fgm3=imerode(fgm2, se2);
 fgm4=bwareaopen(fgm3, 20);
 I3=I;
 I3(fgm4)=255;
 bw=im2bw(Iobrcbr, graythresh(Iobrcbr));
D=bwdist(bw);
  DL=watershed(D);
  bgm=DL==0;
  gradmag2=imimposemin(gradmag, bgm | fgm4);
  L=watershed(gradmag2);
 I4=I;
  I4(imdilate(L==0, ones(3, 3))|bgm|fgm4)=255;
 Lrgb=label2rgb(L, 'jet', 'w', 'shuffle');
 grayimg = rgb2gray(Lrgb);
grayimg = imadjust(grayimg);
binar=im2bw(grayimg, 0.5)
binar=~binar
se = strel('disk',1);
bin = imopen(binar,se);
[B,L] = bwboundaries(bin);
stats = regionprops(L,'Centroid','EquivDiameter');
imshow(binar)
hold on
for k = 1:length(B)
 boundary = B{k};
 radius = stats(k).EquivDiameter/2;
 xc = stats(k).Centroid(1);
 yc = stats(k).Centroid(2);
 theta = 0:0.01:2*pi;
 Xfit = radius*cos(theta) + xc;
 Yfit = radius*sin(theta) + yc;
 if radius>250
 plot(Xfit, Yfit, 'g');
 text(boundary(1,2)-15,boundary(1,1)+15, num2str(radius,3),'Color','r',...
  'FontSize',8);
 set(handles.text2, 'string', num2str(radius));
 vol=4*pi*radius*radius*radius/3;
 set(handles.text7, 'string', num2str(vol));
 j=str2num(get(handles.edit3, 'String'));
 novradius=j*radius;
 set(handles.text14, 'string', num2str(novradius));
 novvol=4*pi*novradius*novradius*novradius/3;
 set(handles.text12, 'string', num2str(novvol));
tmp_data=get(handles.uitable3,'Data'); 
if isnumeric(tmp_data)&& gt(size(tmp_data,1), 1) 
      for m=1:1:in
      tmp_data(m, 2)=vol;
      set(handles.uitable3, 'Data', tmp_data);
      end
elseif iscell(tmp_data)&& gt(size(tmp_data, 1), d+(w+2))
 for i=1:1:in;
      tmp_data(m, 2)=num2cell(vol);
      set(handles.uitable3, 'Data', tmp_data);
 end;  
 end;
end
end 
end
Пожалуйста, помогите мне в решении данного вопроса. Безысходная ситуация. Приму любую помощь.
irchick вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
выделить все рисунки-фото и для всех сразу задать одинаковый формат. АННА-ЕАО Microsoft Office Word 13 20.12.2016 22:20
Кнопка для внесения значений на несколько листов сразу filton Microsoft Office Excel 17 06.09.2013 00:17
1) как перетащить несколько модулей с одной книги на другую одним скопом? 2)можно ли открыть несколько книг сразу? БАХТИ Microsoft Office Excel 17 26.09.2011 18:11
Вывод на экран сразу несколько картинок Artem Общие вопросы Delphi 6 13.12.2007 00:21