วิธีการลบแสงจ้า / ความสว่างที่ถูกตัดออกจากรูปภาพได้อย่างไร


20

ฉันมีรูป

ป้อนคำอธิบายรูปภาพที่นี่

มีวิธีการลบจุดสีขาวสว่างหรือไม่? โปรดช่วยด้วย

แก้ไข:

หลังจากใช้งานกับ gaussian แล้วแสดงโดยใช้ imagesc รับเอาต์พุตต่อไปนี้ซึ่งแสดงจุดสีแดงสดอย่างชัดเจนฉันจะกำจัดพวกมันได้อย่างไร

ป้อนคำอธิบายรูปภาพที่นี่

ช่องสีแดง:

ป้อนคำอธิบายรูปภาพที่นี่

ช่องสีเขียว:

ป้อนคำอธิบายรูปภาพที่นี่

ช่องสีฟ้า:

ป้อนคำอธิบายรูปภาพที่นี่

แก้ไข 2:

การตรวจจับข้อบกพร่องโดยใช้ตัวกรอง Gabor

ป้อนคำอธิบายรูปภาพที่นี่

ฮิสโตแกรมของมัน:

ป้อนคำอธิบายรูปภาพที่นี่

วิธีการคำนวณขีด จำกัด ที่เหมาะสมปรับตัวอย่างไร


รู้จักการติดตั้งไฟไหม?
nav

ไม่จริงไม่มีวิธีลบสิ่งเหล่านี้ไปยังจุดผ่านการกรองและอื่น ๆ ?
vini

4
โดยทั่วไปนี่เป็นปัญหาที่ไม่ดี คุณมีสิ่งแปลกปลอมมากเกินไปและต้องใช้วิธีแก้ปัญหาแบบแก้ปัญหา ขอให้โชคดีในการเลือกคำตอบ
nav

คำตอบ:


19

สมมติว่าส่วนแสงจ้าเป็นพื้นที่อิ่มตัวเพียงอย่างเดียวในภาพ การตรวจจับสามารถทำได้โดยการเพิ่มความเข้มของรหัส (ในรหัส Mathematica):

saturated = Binarize[ColorConvert[img, "Grayscale"], .9]

ป้อนคำอธิบายรูปภาพที่นี่

จากนั้นเราต้องการเพียงแทนที่ส่วนของภาพที่อยู่รอบ ๆ หน้ากากอิ่มตัว (การขยายหน้ากากนั้นทำได้โดยฟังก์ชันทางสัณฐานวิทยาDilation) Inpainting โดยใช้การสังเคราะห์พื้นผิว (โดยใช้ฟังก์ชั่นInpaint) ดูเหมือนว่าจะทำงานได้ดีในตัวอย่างนี้แม้ว่าฉันจะไม่สามารถทดสอบว่าเป็นอินพุตของอัลกอริทึมการตรวจจับข้อบกพร่องของคุณ:

Inpaint[img, Dilation[saturated, DiskMatrix[20]]]

ป้อนคำอธิบายรูปภาพที่นี่


matlab มีวิธีการแบบไหน?
vini

ขออภัยฉันไม่รู้คำตอบสำหรับสิ่งนั้น
Matthias Odisio

การตรวจจับข้อบกพร่องนั้นสมบูรณ์แบบ แต่ต้องมีการทาสีภายในเนื่องจากไม่มีฟังก์ชันในตัวใน MATLAB
vini

1
ฉันดีใจที่คำตอบสามารถแก้ไขปัญหาได้ สำหรับการทาสีใน MATLAB นั้นอาจเหมาะสำหรับคำถามอิสระเกี่ยวกับ SO ดูstackoverflow.com/search?q=matlab+inpaintingเป็นการเริ่มต้น
Matthias Odisio

2
การจัดการระบบสีที่สามารถทำได้ด้วยสิ่งที่เรียกกันว่า "ปัวซองผสมภาพ" สอนที่นี่รหัส Matlab และตัวอย่างที่นี่
Maurits

4

นี่อาจเป็นคำตอบที่ง่าย แต่คุณก็แค่เกณฑ์? เช่น:

img = imread('daRNS.png');
imflat = img; 
imflat(img>150) = 150; 
imagesc(imflat)

ผลลัพธ์ใน:

ภาพแบน

เห็นได้ชัดว่ามันจะดีกว่าที่จะเลือกเกณฑ์การปรับตัว ตัวอย่างเช่นคุณสามารถดูภาพฮิสโตแกรม:

hist(double(img(:)),0:255)

histogram

และลองเลือกเกณฑ์ที่เหมาะสมตามนั้น


กรุณาตรวจสอบการแก้ไขของฉัน 2
vini

@vini ลองดู cut-off ที่มีการอธิบายสัญญาณ 90%
tdc

ฉันเพิ่งจะได้เกณฑ์ แต่เป้าหมายสูงสุดของฉันคือการตรวจจับข้อบกพร่อง .. ซึ่งไม่ได้ช่วยในทางใดทางหนึ่งถ้าฉันธรณีประตูมัน
vini

3
แต่คำถามของคุณคือ "วิธีลบแสงจ้าและความสว่างในภาพ (ประมวลผลภาพล่วงหน้า)?" ไม่ใช่วิธีตรวจหาข้อบกพร่องซึ่งเป็นอีกคำถามหนึ่ง (ยากกว่า) @mrkulk ด้านล่างดูเหมือนจะให้คำตอบที่ใกล้สมบูรณ์สำหรับคำถามนั้นและด้านล่าง
tdc

ใช่คำถามของฉันคือฉันตอนนี้วิธีการตรวจสอบข้อบกพร่อง แต่แสงจ้านี้เป็นอุปสรรคต่อผล
vini

2

ป้อนคำอธิบายรูปภาพที่นี่หากไม่มีข้อมูลแสงมันเป็นเรื่องยาก อย่างไรก็ตามถ้ารู้จักรูปร่างของวัตถุในภาพคุณสามารถตั้งค่าเทมเพลตรูปร่างของแสงจ้าสีขาว (เกาส์เซียน) และทำหน้าต่างบานเลื่อนเพื่อค้นหาการตรวจจับแสงจ้าที่เป็นไปได้ (ตามด้วยการผสมสีจากพื้นที่ใกล้เคียง) เรารับรู้รูปร่าง 3 มิติจากภาพโดยใช้การแรเงา หากรูปร่างจากการแรเงาสามารถให้การไล่ระดับสีผิวเราสามารถทำหน้าต่างเลื่อนและตรวจสอบแม่แบบแสงจ้าของเราในแต่ละสถานที่

หลังจากการตรวจจับขอบแสนรู้: -

ป้อนคำอธิบายรูปภาพที่นี่

โดยพื้นฐานแล้วการทับซ้อน (พื้นที่ทับซ้อนสูงสุด) ระหว่างรูปภาพ # 1 และ # 2 จะเป็นข้อบกพร่อง


การอธิบายสิ่งที่พยายามทำ - ฉันใช้ตัวกรอง gabor ซึ่งส่วนใหญ่ใช้สำหรับการแบ่งส่วนพื้นผิวเพื่อค้นหาข้อบกพร่องในผลไม้อย่างไรก็ตามแสงจ้าทำให้เกิดปัญหาขณะที่ตัวกรองแสดงจุดสีขาวสองจุดเป็นข้อบกพร่องที่ฉันไม่ต้องการ
vini

คุณลองรับช่องเฉพาะ (จาก RGB หรือ YUV) แล้วลองใช้ดู
mrkulk

ภาพที่มีแสงจ้าที่สุดคือภาพที่อยู่ในช่องสีเขียว .. ฉันจะใช้งานและแก้ไขได้อย่างไร?
vini

ฉันลองถ่ายภาพขอบ (แสนอร่อย) ด้วยระดับ 0.5 อย่างที่คาดไว้ฉันไม่เห็นแสงจ้าในภาพ สิ่งนี้จะช่วยให้คุณแข็งแกร่งก่อนสำหรับภูมิภาคที่ไม่มีแสงจ้า
mrkulk

มันจะช่วยฉันในการสร้างภาพที่ปราศจากแสงสะท้อนได้อย่างไร
vini

0

ความคิดเห็นของฉันคือว่านี่เป็นปัญหาเกี่ยวกับการมองเห็นเครื่องที่คุณควรควบคุมแสงและมีความคิดที่ดีเกี่ยวกับความสว่างสูงสุดของความสว่างพิกเซลแบบไม่สะท้อนแสงในภาพ การตรวจจับข้อบกพร่องมักเป็นปัญหาเกี่ยวกับการมองเห็นเครื่องมากกว่าปัญหาการมองเห็นด้วยคอมพิวเตอร์

สิ่งที่เราเห็นเป็นผลมาจากการให้แสงคือการเพิ่มการสะท้อนแสงแบบ specular และ diffuse (บวกกับการเปล่งแสงบางอย่าง แต่มีเล็กน้อยที่นี่)

องค์ประกอบ specular คือแสงจ้าบนพื้นผิวมันวาวเช่นแอปเปิ้ลนี้มันเป็นมากกว่าการสะท้อนแบบกระจาย (> 10x)

ซึ่งหมายความว่าหากคุณตั้งค่าแสงการเพิ่มและการรับแสงก่อนหน้านี้บนพื้นผิวแบบกระจายคุณสามารถมั่นใจได้ว่าจะไม่มีสิ่งใดใกล้เคียงกับความอิ่มตัว ดังนั้นการใช้เกณฑ์คงที่จึงเป็นทางออกที่ต้องการจริง ๆ ตราบใดที่คุณพิสูจน์ด้วยข้อมูลเพียงพอว่า "ไม่มีพิกเซลที่ไม่มีแสงจ้า" จะสูงกว่าเกณฑ์ ในสาระสำคัญคุณกำลังตั้งค่าสภาพแสงและพารามิเตอร์กล้องเช่นการจำแนกพิกเซลกลายเป็นเรื่องเล็กน้อยในกรณีนี้ดำเนินการโดยเกณฑ์ง่าย ๆ แทนที่จะเป็นเครื่องจักรที่ซับซ้อนมากขึ้นเรียนรู้การทำงานของพิกเซลรอบ ๆ

ฉันชอบแนวทางของ "vini" ไม่จำเป็นต้องแสดงเครื่องบิน RGB จริงๆ เพียงแค่เกณฑ์ระดับสีเทาที่เรียบง่ายจะใช้งานได้จริงที่นี่

1- คุณออกแบบสภาพแสงไม่ใช่รอบ

2- ทำให้การจำแนกประเภทเป็นเรื่องเล็กน้อยมาก (thresholding)

3- วัดคุณลักษณะ

4- เปรียบเทียบกับความอดทน


0

แปลงเป็นพื้นที่สีแล็บเป็นครั้งแรก mapminmax จากนั้นใช้ช่องส่องสว่างแรก ที่ช่วยลดปัญหาสี จากนั้นใช้การกำหนดเกณฑ์ขั้นต่ำในพิกเซลที่สว่างที่สุด 80% ตรวจสอบและทดสอบการจุ่มในฮิสโตแกรมขีด จำกัด ที่ดีที่สุดอยู่ใกล้ด้านล่างของการจุ่ม หากไม่มีนาทีท้องถิ่นในภูมิภาคนี้ภาพของคุณอาจมีการสะท้อนเล็กน้อย ...... มาร์ติน


0

วิธีลบการสะท้อนและความสว่างในภาพไอริส (การประมวลผลภาพล่วงหน้า) โปรดช่วยฉันฉันต้องการรหัสใน Matlab หรือ python

ขอขอบคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.