จะเพิ่มคำอธิบายประกอบแบบภาพให้กับรูปภาพโดยใช้ python ในสมุดบันทึก jupyter ได้อย่างไร

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

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

ขณะนี้ฉันกำลังแสดงข้อมูลภาพโดยใช้ matplotlib

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


person sutartmelson    schedule 06.06.2016    source แหล่งที่มา
comment
ฉันไม่คิดว่า Jupyter เป็นเครื่องมือที่เหมาะสมสำหรับงานนี้ แต่ดูเหมือนว่าคุณต้องการพัฒนาเว็บแอปพลิเคชัน   -  person Edu    schedule 07.06.2016
comment
@Edu แม้ว่าฉันจะเห็นด้วยกับคุณ แต่น่าเสียดายที่นี่คือข้อ จำกัด ในการทำงานในปัจจุบันของฉัน :/   -  person sutartmelson    schedule 07.06.2016
comment
เพื่อชี้แจงคำถามของคุณ คุณกำลังบอกว่าคุณต้องการแสดงภาพ Raw ก่อน จากนั้นจึง โดยการติดตามการเคลื่อนไหวของเมาส์และการคลิก วาดวงกลมและลูกศรบนภาพนั้น และทำทั้งหมดภายใน บริบทของสมุดบันทึก Jupyter?   -  person michael_j_ward    schedule 07.06.2016
comment
@michael_j_ward ถูกต้อง แน่นอนว่าการแสดงภาพนั้นค่อนข้างง่าย การติดตามการเคลื่อนไหวของเมาส์และการคลิกสามารถทำได้ภายในบริบท แค่ไม่แน่ใจว่าจะนำไปใช้กับการวาดภาพได้อย่างไรถ้าเป็นไปได้   -  person sutartmelson    schedule 07.06.2016
comment
@sutartmelson เข้าใจแล้ว บางทีนี่อาจมีประโยชน์: matplotlib.org/examples/pylab_examples/cursor_demo.html และ การอภิปรายเกี่ยวกับ stackoverflow นี้: stackoverflow.com/questions/9136938/ ฉันไม่เคยทำอะไรแบบนี้มาก่อนเลย หากคุณพบวิธีแก้ปัญหาโปรดแบ่งปัน   -  person michael_j_ward    schedule 07.06.2016


คำตอบ (2)


ขอบคุณคำแนะนำจาก @michael_j_ward ฉันพบวิธีแก้ไข ฉันดูการสนทนาและบทช่วยสอนเหล่านั้น รวมถึงอ่านเอกสารประกอบสำหรับแกน matplotlib นี่คือสิ่งที่ฉันคิดขึ้น / เปลี่ยนแปลง

import matplotlib.pyplot as plt
from matplotlib.lines import Line2D
import numpy as np
import dicom


class Annotator(object):
    def __init__(self, axes):
        self.axes = axes

        self.xdata = []
        self.ydata = []

    def mouse_move(self, event):
        if not event.inaxes:
            return

        x, y = event.xdata, event.ydata

        self.xdata.append(x)
        self.ydata.append(y)
        line = Line2D(self.xdata,self.ydata)
        line.set_color('r')
        self.axes.add_line(line)

        plt.draw()

    def mouse_release(self, event):
        # Erase x and y data for new line
        self.xdata = []
        self.ydata = []

path = '../sample.dcm'

data = dicom.read_file(path)

img = data.pixel_array

fig, axes = plt.subplots()
axes.imshow(img[0])
plt.axis("off")
plt.gray()
annotator = Annotator(axes)
plt.connect('motion_notify_event', cursor.mouse_move)
plt.connect('button_release_event', cursor.mouse_release)

axes.plot()

plt.show()

ภาพหน้าจอ

ช่วยให้ฉันสามารถเปิดภาพและวาดลงบนภาพเพื่อเน้นหรือใส่คำอธิบายประกอบส่วนสำคัญของภาพได้

person sutartmelson    schedule 07.06.2016
comment
cursorมาจากไหน? ฉันได้รับ NameError: ไม่ได้กำหนดชื่อ 'เคอร์เซอร์' - person MrMartin; 06.05.2019

ภายในสมุดบันทึก Jupyter คุณสามารถใช้:

%matplotlib inline
person Kevin K.    schedule 06.06.2016