MATLAB'ta basit bir resim işleme örneği

MATLAB'ta basit bir resim işleme örneği

Resim işlemenin en kolay olduğu dillerden biri MATLAB'tır.

Aşağıda verilen resmin, ilk olarak renklerinin tersini alalım (inverse).

clear, clc;

girdi = imread('resim_isleme_at.jpg');
[yukseklik, genislik, renk] = size(girdi);

cikti(:, :, :) = 255 - girdi(:, :, :);
imshow(cikti, []);

İşte sonuç aşağıda:

Nasıl kolay mıymış? Peki acaba üzerine yanlışlıkla birşeyler karalanmış bir resmi düzeltebilir miyiz? Aşağıdaki resmi incelerseniz, (255,0,0) rengindeki bir kalemle karalandığını göreceksiniz.

Problemi kolay bir şekilde çözmek için, her bir nokta için, eğer karalama rengini görürsek, çevredeki karalanmamış en yakın noktaya eşitleyelim. Sonuç aşağıda!

clear, clc;

girdi = imread('resim_isleme_at_cizik.png');
[yukseklik, genislik, renk] = size(girdi);

cikti = zeros(yukseklik, genislik, renk);
sil(1, 1, :) = [255, 0, 0];

for i = 2 : yukseklik-1,
    for j = 2 : genislik-1,
        if girdi(i, j, :) == sil,
            if girdi(i+1, j, :) ~= sil,
                cikti(i, j, :) = girdi(i+1, j, :);
            elseif girdi(i-1, j, :) ~= sil,
                cikti(i, j, :) = girdi(i-1, j, :);
            elseif girdi(i, j+1, :) ~= sil,
                cikti(i, j, :) = girdi(i, j+1, :);
            elseif girdi(i, j-1, :) ~= sil,
                cikti(i, j, :) = girdi(i, j-1, :);
            end
        else
            cikti(i, j, :) = girdi(i, j, :);
        end
    end
end

cikti = uint8(cikti);
imshow(cikti);

Ufak bir sorun olmasına rağmen, bu kadarı oldukça kolay. Dört tarafı karalanmış bir noktanın düzeltilemediğini resmi dikkatlice incelerseniz görebilirsiniz!

Peki ya daha gelişmiş bir yöntem hazırlayabilir miyiz?

- Karalama rengini bilmeden resmi düzelten! (Ani değişim noktalarını belirlemeli ve bunları çevredekilerin ortalamaları haline getirmeliyiz)

- Daha kalın karalama kalemlerini düzeltebilen! (Bu bölümleri belirleyip çevredeki karalanmamış bölgeleri bulmalıyız)

- PNG, GIF, BMP dosyalarında bu işi yapmak kolay. Peki ya JPG? (Tam olarak aradığımız rengi bulamayız --> Arama aralığı tanımlayabiliriz)

- Kod gittikçe karışıyor, ne yapalım? (Filtreleme matrisleri tanımlayarak daha anlaşılır bir şekilde kullanım sağlanabilir)

- ...

Evet, hepsi mümkün. Uğraştıktan sonra neden olmasın? :)

MATLAB image processing example (invert, fix errors, fixing scribbles, ... )


6 yıl 6 ay önce eklendi

Ezgi Başaran: Dingoların bilim dünyasından acıklı haberler İTÜ Uyarı Model Uydu Takımı Dünya Birincisi Oldu En araştırmacı Türk üniversitesi İTÜ İTÜ'den uluslararası başarı Güneş enerjisiyle çalışan tekne yarışında dünya 3'üncüsü oldular MPI kütüphanesi kullanarak matris çarpımı MATLAB'ta basit bir resim işleme örneği Lisans Bitirme Ödevlerim Graph Theory and Applications Artificial Intelligence Bilgisayar Mimarisi Computer Graphics Elektroniğe Giriş Laboratuvarı İşletim Sistemleri Mikroişlemci Uygulamaları Laboratuvarı PDE Numerical Methods System Programming Object Oriented Programming Bilgisayar Organizasyonu
1
2
3