Die Mathe-Redaktion - 05.04.2020 10:10 - Registrieren/Login
Auswahl
ListenpunktHome
ListenpunktAktuell und Interessant ai
ListenpunktArtikelübersicht/-suche
ListenpunktAlle Links / Mathe-Links
ListenpunktFach- & Sachbücher
ListenpunktMitglieder / Karte / Top 15
ListenpunktRegistrieren/Login
ListenpunktArbeitsgruppen
Listenpunkt? im neuen Schwätz
ListenpunktWerde Mathe-Millionär!
ListenpunktFormeleditor fedgeo
Schwarzes Brett
Aktion im Forum
Suche
Stichwortsuche in Artikeln und Links von Matheplanet
Suchen im Forum
Suchtipps für den MP

Werbung

Bücher zu Naturwissenschaft und Technik bei amazon.de
Kontakt
Mail an Matroid
[Keine Übungsaufgaben!]
Impressum

Bitte beachten Sie unsere Nutzungsbedingungen, die Distanzierung, unsere Datenschutzerklärung und
die Forumregeln.

Sie können Mitglied werden. Mitglieder können den Matheplanet-Newsletter bestellen, der etwa alle 2 Monate erscheint.

Der Newsletter Okt. 2017

Für Mitglieder
Mathematisch für Anfänger
Wer ist Online
Aktuell sind 495 Gäste und 10 Mitglieder online

Sie können Mitglied werden:
Klick hier.

Über Matheplanet
 
Zum letzten Themenfilter: Themenfilter:
Matroids Matheplanet Forum Index
Moderiert von mire2
Mathematische Software & Apps » Matlab » Bild mit niedrigem Licht verbessern
Druckversion
Druckversion
Antworten
Antworten
Autor
Universität/Hochschule Bild mit niedrigem Licht verbessern
che
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 06.02.2006
Mitteilungen: 568
Aus: BaWü
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Themenstart: 2019-01-20


Hallo,

ich habe hier zwei Aufgaben die aufeinander aufbauen.

Als erstes sollen folgende Gleichungen implementiert werden:
fed-Code einblenden

Dies habe ich mit folgendem Matlab-Skript umgesetzt, stimmt das soweit?
Dieses Skript glättet kleine Farbunebenheiten und erzeugt schärfere Kanten.
MatlabSkript
clear all; clc;
 
im = im2double(imread('test.tif'));
 
[rows, cols] = size(im);
im1 = im;
im2p = zeros(rows, cols);
im2 = zeros(rows, cols);
im_p1 = zeros(rows, cols);
w_ij = zeros(3,3);
N = 10; % number of iterations
para = 100;
 
for k = 1 : N % iterations
  for x = 2 : rows - 1
    for y = 2 : cols - 1 % for each inner pixel
        w_ij_sum=0;
      for i = -1 : 1  
        for j = -1 : 1
         w_ij(i+2,j+2) = exp(-para*abs(im1(x,y)-im1(x+i,y+j)));
         im2p(x,y) = (w_ij(i+2,j+2)*im1(x+i,y+j)) + im2p(x,y);
         w_ij_sum = w_ij_sum + w_ij(i+2,j+2); 
        end 
      end          
       im2p(x,y) =  im2p(x,y)/w_ij_sum;
    end
  end
 
  im1 = im2p;
  im2p = zeros(rows, cols);
 
end
subplot(1,2,1);
imshow(im);
subplot(1,2,2);
imshow(im1);

Im zweiten Teil soll Bilder mit niedrigem Lichtanteil verbessert werden:
fed-Code einblenden

Dazu hab ich folgendes das erste Skript erweitert:
MatlabSkript
clear all; clc;
 
read_image = im2double(imread('test.bmp'));
 
image_temp_1 = read_image;
[rows, cols, pages] = size(image_temp_1);
image_temp_2 = zeros(rows, cols);
image_max_temp = zeros(rows, cols);
image_max_ges = zeros(rows, cols);
image_processed_1 = zeros(rows, cols, pages);
image_proc_result = zeros(rows, cols, pages);
w_ij = zeros(3,3);
w_ij_sum = zeros(rows, cols);
N = 50; % number of iterations
parameter = 1;
epsilon = 0.15;
 
for p = 1 : 3
    for x = 2 : rows - 1
        for y = 2 : cols - 1 % for each inner pixel
            image_max_temp(x,y) = max(max(image_temp_1(x,y,p)));
            if (image_max_ges(x,y)<image_max_temp(x,y))
                image_max_ges(x,y) = image_max_temp(x,y);
            end
        end
    end
end
 
for k = 1 : N % iterations
  for x = 2 : rows - 1
    for y = 2 : cols - 1 % for each inner pixel
      w_ij = zeros(3,3);    
      for i = -1 : 1  
        for j = -1 : 1
         w_ij(i+2,j+2) = exp(-parameter*abs(image_max_ges(x,y))-image_max_ges(x+i,y+j));
         image_processed_1(x,y) = (w_ij(i+2,j+2)*image_max_ges(x+i,y+j)) + image_processed_1(x,y);
         w_ij_sum(x,y) = w_ij_sum(x,y) + w_ij(i+2,j+2); 
        end 
      end          
       image_temp_2(x,y) =  image_processed_1(x,y)/w_ij_sum(x,y);
    end
  end
  image_processed_1 = image_temp_2;
  image_temp_2 = zeros(rows, cols);
end
 
 for p = 1 : 3 
    for x = 2 : rows - 1
        for y = 2 : cols - 1 % for each inner pixel
            image_proc_result(x,y,p) = (read_image(x,y,p)/(image_processed_1(x,y)+epsilon));
        end
    end
 end 
 
subplot(1,2,1);
imshow(read_image);
subplot(1,2,2);
imshow(image_proc_result);


Mein Frage ist nun, bei dem ersten Matlab-Skript bin ich mir sicher das es richtig ist, kann jemand bei meiner Umsetzung einen Fehler finden?
Wenn ich mit dem zweiten Skript dunkle Bilder einlesen will bekomme ich bei weißen Konturen nur noch weiße Flecken.

Danke



  Profil  Quote  Link auf diesen Beitrag Link
che
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 06.02.2006
Mitteilungen: 568
Aus: BaWü
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.1, vom Themenstarter, eingetragen 2019-01-20


Mein problem liegt hauptsächlich in dieser Gleichung:

fed-Code einblenden

ich bin mir nicht sicher wie ich das umsetzen kann/muss.



  Profil  Quote  Link auf diesen Beitrag Link
Folgende Antworten hat der Fragesteller vermutlich noch nicht gesehen.
Delastelle
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 17.11.2006
Mitteilungen: 1448
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.2, eingetragen 2020-02-23


Hallo che!

Die Frage liegt zwar schon etwas zurück, ich antworte aber mal!
Ich habe sowohl Erfahrung mit Matlab als auch mit Fotografie.
Aufhellen von RGB-Bildern habe ich meist mit Addition/Subraktion bei R, G und B getan.

Ist die Aufgabenstellung inzwischen gelöst?

Viele Grüße
Ronald



  Profil  Quote  Link auf diesen Beitrag Link
Neues Thema [Neues Thema] Antworten [Antworten]    Druckversion [Druckversion]

 


Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2020 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP, that seems no longer to be maintained or supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]