แพ็คเกจ imgpalr
ทำให้การสร้างจานสีจากไฟล์รูปภาพเป็นเรื่องง่าย
เลือกประเภทของชุดสีที่จะได้รับจากรูปภาพ: เชิงคุณภาพ ตามลำดับ หรือแตกต่าง
สามารถตัดปริมาณการกระจายสีของภาพได้
สีใกล้ดำหรือขาวใกล้สามารถตัดได้ในพื้นที่ RGB โดยไม่ขึ้นอยู่กับการตัดความสว่างหรือการกระจายความอิ่มตัวของสีในพื้นที่ HSV
การสร้างจานสีตามลำดับยังช่วยให้สามารถควบคุมลำดับขนาดสี HSV ที่จะจัดเรียงได้อีกด้วย
ติดตั้ง CRAN release ของ imgpalr
ด้วย
install.packages("imgpalr")
ติดตั้งเวอร์ชันการพัฒนาจาก GitHub ด้วย
# install.packages("รีโมท")remotes::install_github("leonawicz/imgpalr")
ฟังก์ชั่นหลักคือ image_pal()
ยอมรับรูปภาพ PNG, JPG, BMP หรือ GIF (เฟรมแรก) จากดิสก์หรือ URL โดยจะส่งกลับเวกเตอร์ของสีที่กำหนดจานสีตามรูปภาพและอาร์กิวเมนต์ของฟังก์ชันอื่นๆ ของคุณ คุณยังสามารถตั้งค่า plot = TRUE
เพื่อพล็อตตัวอย่างชุดสี ซึ่งรวมถึงภาพขนาดย่อของรูปภาพต้นฉบับสำหรับการอ้างอิงด้วยภาพ
ตัวอย่างด้านล่างนำเสนอข้อควรพิจารณาโดยทั่วไปบางประการเมื่อได้รับชุดสีจากรูปภาพที่กำหนดเอง
ในชุดตัวอย่างแรกนี้ จานสีที่แตกต่าง คุณภาพ และลำดับจะถูกสร้างขึ้นจากรูปภาพเดียวกัน และในขณะที่เปลี่ยนแปลงการตั้งค่าเพิ่มเติมบางอย่าง
ห้องสมุด(imgpalr) set.seed(1)x <- paste0(system.file(package = "imgpalr"), "/", c("blue-yellow", "purples", "colors"), ".jpg")# จานสีสามประเภท, หนึ่งภาพ# A Divergent paletteimage_pal(x[1], type = "div", saturation = c(0.75 , 1) ความสว่าง = c(0.75, 1) โครงเรื่อง = TRUE)
# Paletteimage_pal เชิงคุณภาพ(x[1], type = "qual", bw = c(0.25, 0.9), plot = TRUE)
# จานสีตามลำดับimage_pal(x[1], type = "seq", k = 2, ความอิ่มตัว = c(0.75, 1), ความสว่าง = c(0.75, 1), seq_by = "hsv", plot = TRUE)
ในภาพทดสอบนี้ เฉดสีจะแตกต่างกันไปในช่วงที่แคบ จานสีตามลำดับนั้นสมเหตุสมผลที่นี่ แต่ไม่จำเป็นต้องจัดเรียงตามเฉดสีให้ดีที่สุด การทำเช่นนี้ยังคงแสดงลำดับสีที่รับรู้ได้ แต่จะแยกแยะได้ยากกว่ามาก การจัดเรียงจานสีก่อนตามความอิ่มตัวหรือความสว่างจะทำให้จานสีตามลำดับดีขึ้นมากในกรณีนี้
image_pal(x[2], type = "seq", seq_by = "hsv", plot = TRUE)
image_pal(x[2], type = "seq", seq_by = "svh", plot = TRUE)
image_pal(x[2], type = "seq", seq_by = "vsh", plot = TRUE)
การใช้รูปภาพที่มีเฉดสีที่โดดเด่นหลายเฉด ทำให้จานสีที่ต่างกันไม่สมเหตุสมผลที่นี่ ลำดับน่าจะจัดเรียงตามสีได้ดีที่สุด
หมายเหตุในภาพที่สองด้านล่าง คุณยังสามารถตั้งค่า quantize = TRUE
เพื่อแสดงภาพขนาดย่ออ้างอิงแบบกำหนดปริมาณสีตามชุดสีที่ได้รับ ซึ่งใช้ฟังก์ชัน image_quantmap()
แทนที่จะวัดปริมาณรูปภาพเพียงอย่างเดียว แต่ยังจับคู่สีของภาพใดๆ กับจานสีที่กำหนดเองตามระยะทางที่ใกล้ที่สุดในพื้นที่ RGB
image_pal(x[3], type = "qual", ความสว่าง = c(0.4, 1), plot = TRUE)
image_pal(x[3], type = "seq", bw = c(0.2, 1), ความอิ่มตัว = c(0.2, 1), พล็อต = TRUE, ปริมาณ = TRUE)
การสร้างจานสีใช้การจัดกลุ่มแบบเคมีน ผลลัพธ์จะแตกต่างกันในแต่ละครั้งที่คุณเรียก image_pal()
หากจานสีที่คุณได้รับรู้สึกว่าไม่ถูกต้อง แม้ว่าจะมีอาร์กิวเมนต์ที่ตายตัวแล้ว คุณสามารถเรียกใช้จานสีนั้นอีกครั้งเพื่อรับจานสีอื่นได้ ขึ้นอยู่กับการตั้งค่าและลักษณะของภาพต้นฉบับ อาจมีการเปลี่ยนแปลงเล็กน้อย หากคุณต้องการจานสีที่สามารถทำซ้ำได้ ให้ตั้งค่าอาร์กิวเมนต์ seed
ในตัวอย่างด้านบน เมล็ดถูกตั้งค่าแบบโกลบอลเพื่อหลีกเลี่ยงการตั้งค่าในการเรียก image_pal()
แต่ละครั้ง
คุณสามารถกำหนดปริมาณสีในรูปภาพได้โดยใช้ image_quantmap()
โดยตรง เลือกเวกเตอร์สีใดก็ได้ แต่ละพิกเซลจะมีสีที่แมปกับสีใดก็ตามที่อยู่ใกล้กับสีเหล่านี้มากที่สุดในพื้นที่ RGB อาร์เรย์ RGB จะถูกส่งกลับ คุณสามารถลงจุดภาพด้วยจานสีได้
x <- system.file("blue-yellow.jpg", package = "imgpalr")pal <- c("black", "navyblue", "dodgerblue", "yellow")a <- image_quantmap(x, pal) , k = 7, โครงเรื่อง = TRUE)
str(ก)#> เลข [1:317, 1:400, 1:3] 0 0 0 0 0 0 0 0 0 0 ...
วิธีนี้ใช้ได้ผลดีหากคุณต้องการกำหนดปริมาณสีให้เป็นสีที่อยู่ห่างออกไปในพื้นที่ RGB ไม่ไกล แต่ถ้าคุณต้องการสลับสีออกเป็นสีที่ต่างกันมากด้วย ขั้นตอนนี้ควรเป็นกระบวนการสองขั้นตอน หากคุณระบุเวกเตอร์สีที่มีความยาวเท่ากันให้กับอาร์กิวเมนต์ pal2
สีเหล่านี้จะแทนที่สีที่อยู่ใน pal
หลังจากการหาปริมาณเริ่มต้น
pal2 <- c("darkred", "darkgreen", "tomato", "orange")a <- image_quantmap(x, pal, pal2, k = 7, plot = TRUE, show_pal = FALSE)
หมายเหตุ: ฟังก์ชั่นนี้อาจทำงานได้ช้ามากสำหรับรูปภาพขนาดใหญ่ k
และ/หรือขนาดใหญ่
นอกจากนี้ยังมีแพ็คเกจ RImagePalette บน CRAN ซึ่งใช้อัลกอริธึมการตัดค่ามัธยฐานในการค้นหาสีที่โดดเด่นในรูปภาพ
imgpalr
เดิมได้รับแรงบันดาลใจจากแพ็คเกจ Paletter บน GitHub แพ็คเกจทั้งสองใช้การจัดกลุ่มแบบเคมีนเพื่อค้นหาสีของภาพหลัก แต่ใช้วิธีการที่แตกต่างกันในการประกอบชุดสี
การแสดงตัวอย่างพาเล็ต (โดยไม่ต้องเพิ่มภาพขนาดย่อ) อิงจาก scales::show_col()
ซึ่งเป็นฟังก์ชันที่สะดวกสำหรับการลงจุดพาเล็ต คุณยังสามารถใช้ pals::pal.bands()
เพื่อทำเช่นเดียวกันโดยใช้เลย์เอาต์ภาพอื่นได้
หากคุณต้องการปรับแต่งคุณสมบัติสีของรูปภาพโดยตรงเพื่อประโยชน์ของตัวมันเอง แทนที่จะรับจานสีเพื่อวัตถุประสงค์อื่น คุณสามารถทำได้โดยใช้แพ็คเกจ magick ซึ่งให้การเชื่อมโยงกับไลบรารี ImageMagick
แมทธิว ลีโอนาวิซ (2024) imgpalr: สร้างจานสีจากรูปภาพ แพ็คเกจ R เวอร์ชัน 0.4.0 https://CRAN.R-project.org/package=imgpalr
ยินดีบริจาค มีส่วนร่วมผ่าน GitHub ผ่านคำขอดึง โปรดสร้างปัญหาก่อนหากเกี่ยวข้องกับการเพิ่มหรือเปลี่ยนแปลงคุณลักษณะสำคัญใดๆ
โปรดทราบว่าโครงการ imgpalr
ได้รับการเผยแพร่พร้อมกับจรรยาบรรณของผู้ร่วมให้ข้อมูล การมีส่วนร่วมในโครงการนี้แสดงว่าคุณตกลงที่จะปฏิบัติตามข้อกำหนดของโครงการ