Soru sorCisim tespitinden sonra pixel değerlerini inceleme
lifeisnotbeautiful tarafından 6 yıl önce soruldu

Merhabalar MATLAB  Görüntü işleme üzerine bir sorum burada  farklı renklerde bulunan dikdörtgenlerden oluşan bir resim bulunmakta , öncelikle bu resimdeki dikdörtgenleri bir birinden ayırıp detect edip , sonrasında ayırdığım her dikdörtgen için pixel değerlerini x-y koordinatları şeklinde bulmam gerekiyor , çok uzun araştırmalar ve denemeler yaptıktan sonra buraya yazmaya karar verdim. Yardımcı olursanız çok sevinirim görüntü işlemeye yeni başlayan biriyim.

9 Cevap
hakkans Yönetici tarafından 6 yıl önce cevaplandı

Merhaba,
Sorduğunuz soru geniş olduğu için birkaç tavsiyede bulunacağım. İlerledikçe daha belirli sorularınıza daha net cevaplar vermeye çalışırız.
Eğer aynı resimde belirli tonda dikdörtgenleri inceleyecekseniz, imshow() komutu ile bu resmi Matlab üzerinde görüntüleyin ve data cursor kullanarak dikdörtgenlerin içindeki tonların RGB değerine bakın (ya da siyah-beyaz bakacaksanız bu tonda değerine). Sonra bu resimdeki piksellerin konumlarını istediğiniz tona sahip olup olmamasına göre 1 ya da 0 değerine sahip bir ikili (binary) matrise atayın. Bu ikili matristeki 1 ve 0 değerleri sadece siyah ve beyazdan oluşan bir görüntü verecektir. Bundan sonra, regionprops() fonksiyonu ile siyah/beyaz alanın çeşitli özelliklerini hesaplayabilirsiniz. Aşağıdaki sayfada aradığınıza yönelik örnekler/seçenekler var gibi görünüyor:
https://www.mathworks.com/help/images/ref/regionprops.html

lifeisnotbeautiful tarafından 6 yıl önce cevaplandı

teşekkür ederim söylediklerinizi deneyeceğim

lifeisnotbeautiful tarafından 6 yıl önce cevaplandı

merhabalar data curso kullanımı hakkında yardıma ihtiyacım var. matlab sitesinde

fig = figure;
z = peaks;
plot(z(:,30:35))
dcm_obj = datacursormode(fig);
set(dcm_obj,'DisplayStyle','datatip',...
'SnapToDataVertex','off','Enable','on')

disp('Click line to display a data tip, then press Return.')
% Wait while the user does this.
pause

c_info = getCursorInfo(dcm_obj);
% Make selected line wider
set(c_info.Target,'LineWidth',2) 

bu kodları gördüm ve çalıştırdığımda internetteki aynı görüntü ekrana geldi , hangi kısımı kendi bilgilerim doğrultusunda değiştirmem gerektiğini anlayamadım. Yardımcı olursanız sevinirim

hakkans Yönetici tarafından 6 yıl önce cevaplandı

Data cursor için herhangi bir kod kullanımı gerekmiyor. Figür penceresinde data cursor seçeneği var. https://www.mathworks.com/help/matlab/ref/datacursormode.html linkinde en altta Alternatives bölümünde simgenin resmini görebilirsiniz. Bu simgeye bastığınızda resim üzerine fare ile tıkladığınızda bir data cursor ortaya çıkacaktır. Bunu resmin ilgili bölümlerine kaydırarak pikseller hakkında bilgi alabilirsiniz.

lifeisnotbeautiful tarafından 6 yıl önce cevaplandı

çok teşekkür ederim peki benim bu pixel değerlerini bir grafik üzerinde inceleme şansım var mı? Tek tek noktolara tıklamak yerine.

sayginer Yönetici tarafından 6 yıl önce cevaplandı

Aşağıdaki kodu inceleyebilirsiniz:

 

clear; clc;
% Goruntumuzu Yukleyelim
RGB = imread('hello5.JPG');
imshow(RGB)
% RGB Goruntuyu Grayscale yapalim
I = rgb2gray(RGB); %I matrisimdeki her element bir piksele karsilik gelen Grayscale renk tonunu verecek
figure
imshow(I) %Grayscale resmimizi bastirabiliriz de
 

 
Workspace  üzerinde I değişkenine tıkladığınızda bütün değerleri matris olarak görebilirsiniz. Tek tek seçmenize gerek kalmaz.

lifeisnotbeautiful tarafından 6 yıl önce cevaplandı

sanırım tam anlatamadım sorunumu , gray scale dönüştürdükten sonra bu pixel değerlerini matrise dönüştürmek istiyorum

sayginer Yönetici tarafından 6 yıl önce cevaplandı

Yukarıda paylaştığım koddaki I değişkeni size bahsettiğiniz matrisi veriyor zaten??

lifeisnotbeautiful tarafından 6 yıl önce cevaplandı

Tamamdır Anladım teşekkür ederim