Verfasst am: 22.10.2020, 13:47
Titel: Imcontrast für mehrere Bilder
Hallo zusammen,
Ich habe mit Hilfe eines Button eine Kontrastfunktion erstellt.
Sobald ich den Knopf gedrückt habe erscheint die Adjust Contrast GUI. Wenn ich nun über das Histogram klicke würde ich gern den Kontrast der Bilder sehen welche ich zuvor hochgeladen habe. Die Änderung soll aber in 4 neuen axes zu sehen sein.
Momentan wird nur das letzte Bild in axes4 verändert. Die kontraständerung passiert auch leider im gleichen Axes.
Hat dein Bild vielleicht deutlich mehr Zeilen als Spalten?
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
das Problem ist hier wieder recht ähnlich zu imcontrast. Mein Datensatz hat sehr viele Koordinaten (mehr Zeilen als Spalten). Ich greife auch hier wieder auf das generierte Bild in einer axes zu... Es funktioniert auch soweit nur wird es eben extrem schmal dargestellt
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
ich habe das Problem beinahe gelöst. Ich hätte diesbezüglich noch die Frage ob es eine questionDialogBox mit 4 Fragen gibt? Geht das? Mit 3 AntwortButton geht es.
Bei 4 AntwortButton kommt die Meldung 'Error using questdlg Too many input arguments.'
Edit: Insbesondere für App Designer gibt es uiconfirm, das hier flexibler ist.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
gibt es hierfür vllcht ne alternative Lösung? ich habe 4 Auswahlmöglichkeiten.
ich habe jetzt alle 4 bilder in einzelnen figures geöffnet. müsste aber jetzt für jedes figure imcontrast() seperat aufrufen.... Das heißt ich habe 4 figures und 4 mal das adjustContrast Fenster offen. Der Bildschirm ist entsprechend überladen mit 8 Fenstern.
Im Grunde steht meine function nur ist es nicht benutzerfreundlich.
gibt es hierfür vllcht ne alternative Lösung? ich habe 4 Auswahlmöglichkeiten.
Zu questdlg? Ja, ich habe dir ja zwei Alternativen geschrieben.
Zitat:
ich habe jetzt alle 4 bilder in einzelnen figures geöffnet. müsste aber jetzt für jedes figure imcontrast() seperat aufrufen.... Das heißt ich habe 4 figures und 4 mal das adjustContrast Fenster offen. Der Bildschirm ist entsprechend überladen mit 8 Fenstern.
imcontrast hat ja ein Rückgabeargument. Wie man da auf die Schnelle die benötigten Infos bekommt, ist die andere Frage.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
du brauchst den Code ja nicht im Detail zu verstehen, solange du ihn ausführen kannst - und dazu sollte das Beispiel in der Doku der Funktion hilfreich sein.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Den Beitrag kopieren oder noch besser herunterladen, das enthaltene Beispiel kopieren und ausführen.
Zitat:
Das hab ich schon probiert.. und das geht nicht
Ich habe es auch probiert, und es geht.
Beschreibe bitte genau, am besten anhand von Code, was du machst, und vor allem: schreibe dazu, was nicht funktioniert - und das bitte immer. Wenn man erst nachfragen muss und du das vielleicht nochmal suchen und dann antworten musst, ist das für uns beide nicht effizient.
Zitat:
Es ist nicht möglich imcontrast gleichzeitig auf mehrere subplots anzuwenden?
Meines Wissens nein. Wenn es möglich wäre, würde es wohl ein entsprechendes Beispiel in der Doku geben. Vielleicht helfen andere Funktionen wie imadjust weiter.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Den Beitrag kopieren oder noch besser herunterladen, das enthaltene Beispiel kopieren und ausführen.
kannst du das einfach mal kurz hier reinstellen wie das dann aussieht? Ich habe den code jetzt kopiert und mein button entsprechend der Funktion benannt, sodass alles passt. Irgendwas mache ich falsch
Mich würde es einfach interessieren.
Mein Problem habe ich übrigens mit einem verschachtelten switch case gelöst... ist zwar nicht so elegant aber es funktioniert.
function choise=bttnChoiseDialog(dlgOptions, dlgTitle, defOption, qStr, bttnsOredring)
%% bttnChoiseDialog % Create and open a button dialog box with many buttons.
%
%% Syntax % bttnChoiseDialog(dlgOptions); % bttnChoiseDialog(dlgOptions, dlgTitle); % bttnChoiseDialog(dlgOptions, dlgTitle, defOption); % bttnChoiseDialog(dlgOptions,dlgTitle, defOption, qStr); % bttnChoiseDialog(dlgOptions, dlgTitle, defOption, qStr, bttnsOredring);
%
%% Description % Create and open a push button dialog box, which is a generalized version of a question % dialog box (called by questdlg). User can enter any number of input options (buttons) % for one to choose from, as opposed to questdlg, where only 2 or 3 options are % supported. User can also set the buttons ordering (columns, rows). Dialog will attempt % to set parameters to optimally present button text.
%
%% Input arguments (defaults exist): % dlgOptions- a cell array of strings, each of which is an option proposed to user as a % push button, for selection from. % dlgTitle- a 'title' displayed in the figure's title bar. Expected to be a string. A % space by default. % defOption- a default preset option, used if user makes no choise, and closes dilaog. Can % be either a string- one of the dlgOptions cell array elements, or an integer- the % dlgOptions elements index. % qStr- a string of the dialog question, instructing the user to choose among his options. % Expected to be a sting. Empty by default. % bttnsOredring- an 2X1 array of integers, describing the number of button rows and % columns. Default value exist. Similar to format used in subplot.
%
%% Output arguments % choise- index ot the user chosen (clicked) button.
%
%% Issues & Comments % Choosing the deafult button is achived by clicking it (naturally) or closing figure. If % functione wasn't exited properly, figure should be closed via inline delete(figH) % command. Clicking figure "X" mark on top left corner will fail, as it's overriden.
%
%% Example % inputOptions={'MATLAB', '(matrix laboratory)', 'is a numerical', 'computing',... % 'environment and 4G PL'}; % defSelection=inputOptions{3}; % iSel=bttnChoiseDialog(inputOptions, 'Demonstarte bttnChoiseDialog', defSelection,... % 'What is your preferred option?'); % fprintf( 'User selection "%s"\n', inputOptions{iSel}); %
%% See also % - questdlg
%
%% Revision history % First version: Nikolay S. 2012-06-06. % Last update: Nikolay S. 2013-01-02.
%
% *List of Changes:* % -2013-01-02- An ossue reported by Dan K and Louis Vallance was fixed, % using Dan K proposal. % -2012-06-21- changed elements 'Units' to 'characters' instead of 'normalized' to % quarantee proper font size, cross platform. Changes root units back and foprth during % run time.
%% Default params if nargout>1 error('MATLAB:bttnChoiseDialog:WrongNumberOutputs',...
'Wrong number of output arguments for QUESTDLG');
end if nargin<1 error('MATLAB:bttnChoiseDialog:WrongNumberInputs',...
'Wrong number of input arguments for bttnChoiseDialog');
end ifnargin==1
dlgTitle=' ';
end if nargin<=2
defOption=dlgOptions{1};
end if nargin<=3
qStr=[];
titleSps=0;
end if nargin<=4
bttnsOredring=[];
end if nargin>5 error('MATLAB:bttnChoiseDialog:TooManyInputs', 'Too many input arguments');
end % internal params
bttnFontSize=0.7;
btntxtH=2;
%% Buttons ordering definition
nButtons=length(dlgOptions);
nLongestOption=max(cellfun(@length, dlgOptions));
% Set buttons ordering- N Columns and N Rows ifisempty(bttnsOredring)
bttnsOredring=zeros(1, 2);
bttnsOredring(1)=ceil(sqrt(nButtons));
bttnsOredring(2)=ceil( nButtons/bttnsOredring(1));
end if bttnsOredring(1)>1 && bttnsOredring(1)<=nButtons
bttnRows=bttnsOredring(1);
bttnCols=ceil( nButtons/bttnRows );
else if bttnsOredring(2)>1 && bttnsOredring(2)<=nButtons
bttnCols=bttnsOredring(2);
else
bttnCols=floor(sqrt(nButtons));
end
bttnRows=ceil( nButtons/bttnCols );
end ifexist('titleSps', 'var')~=1
titleSps=1.25*btntxtH; % Title gets more space then buttons. end
spaceH=0.5;
spaceW=2;
%% Dialog Figure definition % Open a figure about screen center
menuFigH=figure('Units', 'normalized', 'Position', [.5, .5, .1, .1], 'MenuBar', 'none',...
'NumberTitle', 'off', 'Name', dlgTitle, 'CloseRequestFcn', 'uiresume(gcbf)');
% 'CloseRequestFcn' override figure closing % make sure figure form allows good text representation Get screen resolution in % characters
getRootUnits= get(0, 'Units');
set(0, 'Units', 'characters');
ScreenSize=get(0, 'ScreenSize'); % In characters set(0, 'Units', getRootUnits);
set(menuFigH, 'Units', 'characters');
FigPos=get(menuFigH, 'Position');
figH=titleSps+(btntxtH+spaceH)*bttnRows+spaceH;
figW=max( spaceW+btntxtH*bttnCols*(nLongestOption+spaceW),...
titleSps*length(qStr)+2*spaceW );
if figW > ScreenSize(3)
figW=ScreenSize(3);
% raise some flag, figure Width will be too small, use textwrap... end if figH > ScreenSize(4)
figH=ScreenSize(4);
% raise some flag, figure Height will be too small end
FigL=FigPos(1)-figW/2;
FigB=FigPos(2)-figH/2;
FigPos=[FigL, FigB, figW, figH]; % [left bottom width height] set(menuFigH, 'Position', FigPos);
%% Button group definition
iDefOption=1;
buttonGroup = uibuttongroup('Parent', menuFigH, 'Position', [0011]);
ifexist('defOption', 'var')==1 && ~isempty(defOption) ifischar(defOption)
iDefOption=strcmpi(defOption, dlgOptions);
elseif isnumeric(defOption) && defOption>1 && defOption<nButtons
iDefOption=defOption; % defOption is an index of the default option end end
%% Question definition if titleSps>0
titleH=uicontrol( buttonGroup, 'Style', 'text', 'String', qStr,...
'FontUnits', 'normalized', 'FontSize', bttnFontSize,...
'HorizontalAlignment', 'center', 'Units', 'characters',...
'Position', [spaceW , figH-titleSps, figW-2*spaceW, titleSps]);
end
%% Radio buttons definition
bttnH=max(1, (figH-titleSps-spaceH)/bttnRows-spaceH);
interBttnStpH=bttnH+spaceH;
bttnW=nLongestOption*btntxtH;
interBttnStpW=max((figW-spaceW)/(bttnCols), bttnW+spaceW);
buttnHndl=zeros(nButtons, 1);
for iBttn=1:nButtons
[iRow, iCol]=ind2sub([bttnRows, bttnCols],iBttn);
currBttnHeigth=figH-titleSps-iRow*interBttnStpH;
currBttnLeft=(iCol-1)*interBttnStpW+spaceW+(interBttnStpW-bttnW-spaceW)/2;
buttnHndl(iBttn) = uicontrol( buttonGroup, 'Style', 'pushbutton',...
'FontUnits', 'normalized', 'Units', 'characters', 'FontSize', bttnFontSize,...
'String', dlgOptions{iBttn}, 'Callback', @my_bttnCallBack,...
'Position', [currBttnLeft , currBttnHeigth, bttnW, bttnH]);
end set(buttnHndl(iDefOption), 'Value', 1); % set default option set(cat(1, buttnHndl, titleH, buttonGroup),'Units', 'normalized')
uiwait(menuFigH); % wait untill user makes his choise, or closes figure % choise=find( cell2mat( get(buttnHndl, 'Value') ) ); delete(menuFigH);
function my_bttnCallBack(hObject, ~)
choise=find(strcmp(dlgOptions,get(hObject,'String')));
uiresume(gcbf) end end
Da du nicht schreibst, was du machst, kann ich dir auch nicht sagen, was du falsch machst. Wie im vorherigen Beitrag geschrieben:
Zitat:
Beschreibe bitte genau, am besten anhand von Code, was du machst, und vor allem: schreibe dazu, was nicht funktioniert - und das bitte immer.
Sonst ist es mir leider nicht möglich, dir zu helfen.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.