Saya punya gambar ini
Saya ingin menghapus bayangan dari gambar. Saya tahu banyak metode yang berbeda seperti operasi morfologis tertentu telah digunakan untuk menghilangkan bayangan:
Saya telah membuat topeng ini untuk gambar yang sama
Apakah ada beberapa metode lain yang bisa saya coba menggunakan topeng ini yang telah saya buat?
EDIT :
masukan gambar dan topeng dengan ukuran yang sama seperti yang diminta:
EDIT 2: saya menghasilkan gambar invarian 1D namun tidak sempurna
I = imread('shadow.jpg');
J = im2double(I);
R = J(:,:,1);
G = J(:,:,2);
B = J(:,:,3);
[len,wid] = size(R);
% Generation of 2-D Log Chromaticity Image.
for i = 1:len
for j = 1:wid
if ((R(i,j)*G(i,j)*B(i,j))~= 0)
c1(i,j) = R(i,j)/((R(i,j)*G(i,j)*B(i,j))^(1/3));
c2(i,j) = G(i,j)/((R(i,j)*G(i,j)*B(i,j))^(1/3));
c3(i,j) = B(i,j)/((R(i,j)*G(i,j)*B(i,j))^(1/3));
else
c1(i,j) = 1;
c2(i,j) = 1;
c3(i,j) = 1;
end
end
end
rho1 = mat2gray(log(c1));
rho2 = mat2gray(log(c2));
rho3 = mat2gray(log(c3));
X1 = mat2gray(rho1*1/(sqrt(2)) - rho2*1/(sqrt(2))); %(1/sqrt(2); -1/sqrt(2); 0)
X2 = mat2gray(rho1*1/(sqrt(6)) + rho2*1/(sqrt(6)) - rho3*2/(sqrt(6))); %(1/sqrt(6); 1/sqrt(6); -2/sqrt(6))
theta = 120;
InvariantImage = cos(theta*pi/180)*X1 + sin(theta*pi/180)*X2;
imagesc(InvariantImage); colormap(gray)
Tidak dapat mengerti apa yang saya lakukan salah di sini tolong bantu?
image-processing
vini
sumber
sumber
Jawaban:
Ada lusinan publikasi yang berurusan dengan deteksi bayangan, membuat topeng-bayangan, dan bahkan beberapa yang benar-benar menghilangkan bayangan - seperti yang disebutkan dalam posting sebelumnya. Saya bisa menambahkan beberapa ke daftar, jika perlu. Masalahnya, bagaimanapun, IMHO masih jauh dari terpecahkan. Untuk memulai cepat, diberi topeng-bayangan, saya sarankan (dan telah mencoba di masa lalu) dua pendekatan berikut. Mereka pasti mengurangi bayangan - tidak selalu mulus, dan saya yakin ada publikasi (bukan oleh saya) yang berurusan dengan penghapusan bayangan dengan cara yang sama.
Teknik Manipulasi Domain Gradient seperti dijelaskan di sini (C dan Kode Matlab disediakan): http://www.umiacs.umd.edu/ ~ aagrawal/ICCV2007Course/ index.html Pendekatan integrasi gradien dapat digunakan untuk sejumlah pemrosesan gambar masalah, lihat slide / presentasi untuk contoh lebih lanjut.
Gagasan umum:
Manipulasi kecerahan dalam domain gambar asli.
Saya juga telah mencoba menggunakan model warna yang berbeda, misalnya HSV, yang menghadirkan pencahayaan atau kecerahan secara langsung, yang kemudian dapat dimodifikasi tanpa tergantung pada warna (rona / saturasi). Ini pada dasarnya bekerja seperti manipulasi kecerahan, yaitu menghasilkan topeng beban yang halus dan melipatgandakannya dengan saluran luminance. Mungkin kedua pendekatan, yaitu integrasi gradien dan manipulasi kecerahan, dapat digabungkan dengan cara yang cerdas, tetapi seseorang mungkin telah mencobanya sebelumnya juga.
Semoga itu bisa membantu, salam hormat, Derik.
sumber
Saya telah melihat gambar ini sebelumnya. Sebenarnya di sini ada di kertas pada topik yang ingin Anda pecahkan. Ditindaklanjuti dengan makalah lain dari kelompok penelitian yang sama di Universitas Simon Fraser. Kedua hal ini akan memberi Anda pengantar yang baik untuk masalah penyelesaian warna untuk pencahayaan invarian.
sumber
Ada beberapa metode yang berbicara tentang deteksi Shadow pada dasarnya bekerja dengan latar belakang yang diketahui. Tidak ada gagasan absolut tentang apa itu bayangan hanya dengan melihat warna piksel. Namun, Anda perlu mengidentifikasi bayangan tanpa referensi.
Meskipun masalah ini sulit, berikut ini adalah solusi sepele - meskipun mudah ini mungkin bukan yang terbaik, tetapi bagaimanapun itu mungkin membantu Anda mendapatkan beberapa perspektif.
Mari kita periksa komponen gambar dalam domain HSL
adalah Hue Component,
adalah Saturation Component, dan Lightness Component
Diketahui bahwa Lightness sangat terkait dengan padanan warna abu-abu dari gambar dan juga Shadow pada dasarnya
Dari sini .
Oleh karena itu, overlay yang mengurangi pantulan kata kegelapan Anda dapat mengidentifikasi yang sama di bagian abu-abu dari gambar - tetapi Anda akan menemukan itu saling mempengaruhi jauh lebih sedikit di bagian warna (Hue dan saturasi ke agak).
Sekarang, di sini, saya dapat menghasilkan dua gambar - di mana
Pada gambar pertama ini kami telah menghapus komponen Lightness (diganti dengan nilai rata-rata tetap)
Pada gambar kedua kami telah menghapus komponen Saturasi dengan cara yang sama
Kita dapat melihat bahwa meskipun cahaya dipertahankan tetapi saturasi dihilangkan, informasi penting tentang bayangan tetap utuh - di mana ketika kita menghilangkan cahaya, informasi bayangan akan turun secara signifikan. Meskipun ini tidak sempurna, itu membuat fitur kunci yang memungkinkan Anda untuk membedakan apa sebenarnya bayangan dari latar belakang.
Berdasarkan ini, Anda dapat memperlakukan gambar "Lightness dihapus" sebagai latar belakang dan yang lainnya sebagai gambar insiden dan mengelompokkan gambar berdasarkan dua informasi ini; Jadi di daerah di mana bayangan tidak memainkan peran utama, perbedaannya bisa jauh lebih sedikit, di mana ketika bayangan ada segmen itu akan menunjukkan kesalahan tinggi.
Atau Anda dapat menerapkan segmentasi independen (seperti pertumbuhan wilayah) pada kedua gambar. Gambar yang dihapus saturasi akan memiliki segmen tambahan yang tidak akan ada dalam gambar yang dihapus dengan cahaya yang tidak lain adalah segmen bayangan.
Catatan: Anda dapat membedakan gambar yang dihapus HSL dengan aslinya. Coba juga hal-hal serupa dengan ruang warna HSV dan juga YCbCr.
sumber
Anda dapat mengambil histogram dari area bertopeng (bayangan) dan menerapkan transformasi warna linier sehingga histogram dari area bertopeng dan sisa gambar cocok.
Saya kira faktor skala dalam transformasi akan diabaikan, hanya shifing dari kecerahan akan diperlukan, jadi Anda mungkin hanya mengambil kecerahan rata-rata dari dua segmen (bayangan, sorrounding) dan menerapkan perbedaannya.
sumber