Image dimensions:


library(tidyverse)
library(jpeg)
library(mdatools)
library(plotly)



beef = readJPEG('beef.jpg')
dim(beef)
[1] 492 681   3


Channels


par(mfrow= c(2,2))
d = mda.im2data(beef)
imshow(d, 1:3, main = 'RGB')
imshow(d, 1, main = 'RED', colmap = 'gray')
imshow(d, 2, main = 'GREEN', colmap = 'gray')
imshow(d, 3, main = 'BLUE', colmap = 'gray')

pc = pca(d)
pc = selectCompNum(pc, 2)



plotScores(pc, cex= 0.1)


imshow(pc$calres$scores, 1)

library(gatepoints)

score = pc$calres$scores[,1:2]

x11()
mdaplot(score, cex= 0.1)
selectedPoints <- fhs(score)
Mark region on plot.

selection = selectedPoints[1:length(selectedPoints)] %>% as.numeric()

pc = pca(d, exclrows = selection)

plotScores(pc, cex= 0.1)

NA
NA

imshow(pc$calres$scores)

x11()
mdaplot(pc$calres$scores[-selection,1:2], show.lines = c(0,0), cex = 0.1)
selectedPoints2 <- fhs(pc$calres$scores[,1:2])
Mark region on plot.
selection2 = selectedPoints2[1:length(selectedPoints2)] %>% as.numeric()
a = c(1:nrow(d))
a = a[-selection2] %>% as.numeric()

pc1 = pca(d, exclrows = a)

plotScores(pc1, cex= 0.1)



imshow(pc1$calres$scores,1)

NA
NA
e = mda.setimbg(d, d[,1] < 0.88)

imshow(e,2)

Overall = length(d)
Sample = length(d)-length(selection)
Marbling = length(selection2)

dftot = data.frame('Pixel_count' = c(Overall, Sample, Marbling))
rownames(dftot) = c('Overall', 'Sample', 'Marbling')

dftot = cbind(dftot, 'prc' = c(dftot$Pixel_count/Overall*100)) %>%   round(digits = 2)%>% 
  mutate(sample_prc = c('-','-', round((Marbling/Sample*100), digits = 2) ))  %>%
  mutate(prc = paste(prc, '%', sep = ''))
      
dftot$sample_prc[3] = paste(dftot$sample_prc[3], '%', sep = '')
  
dftot %>% kable() %>% kable_styling('striped', full_width = F)
Pixel_count prc sample_prc
Overall 1005156 100% -
Sample 851356 84.7% -
Marbling 22799 2.27% 2.68%
NA
LS0tDQp0aXRsZTogIkltYWdlIHByb2Nlc3NpbmciDQpvdXRwdXQ6DQogIGh0bWxfbm90ZWJvb2s6DQogICAgdGhlbWU6IGNlcnVsZWFuDQogICAgY29kZV9mb2xkaW5nOiBoaWRlDQotLS0NCg0KPGJyLz4NCg0KIyMjIEltYWdlIGRpbWVuc2lvbnM6DQoNCg0KYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCg0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KGpwZWcpDQpsaWJyYXJ5KG1kYXRvb2xzKQ0KbGlicmFyeShwbG90bHkpDQpsaWJyYXJ5KGthYmxlRXh0cmEpDQoNCg0KDQpiZWVmID0gcmVhZEpQRUcoJ2JlZWYuanBnJykNCmRpbShiZWVmKQ0KDQpgYGANCjxici8+DQoNCiMjIyBDaGFubmVscw0KDQoNCg0KYGBge3IsIGZpZy5hbGlnbj0nY2VudGVyJywgZmlnLndpZHRoPTgsIGZpZy5oZWlnaHQ9Nn0NCg0KcGFyKG1mcm93PSBjKDIsMikpDQpkID0gbWRhLmltMmRhdGEoYmVlZikNCmltc2hvdyhkLCAxOjMsIG1haW4gPSAnUkdCJykNCmltc2hvdyhkLCAxLCBtYWluID0gJ1JFRCcsIGNvbG1hcCA9ICdncmF5JykNCmltc2hvdyhkLCAyLCBtYWluID0gJ0dSRUVOJywgY29sbWFwID0gJ2dyYXknKQ0KaW1zaG93KGQsIDMsIG1haW4gPSAnQkxVRScsIGNvbG1hcCA9ICdncmF5JykNCg0KYGBgDQoNCg0KDQpgYGB7cn0NCnBjID0gcGNhKGQpDQpwYyA9IHNlbGVjdENvbXBOdW0ocGMsIDIpDQoNCg0KYGBgDQo8YnIvPg0KDQoNCmBgYHtyLCBmaWcuYWxpZ249J2NlbnRlcid9DQoNCnBsb3RTY29yZXMocGMsIGNleD0gMC4xKQ0KDQpgYGANCmBgYHtyLCBmaWcuYWxpZ249J2NlbnRlcid9DQoNCmltc2hvdyhwYyRjYWxyZXMkc2NvcmVzLCAxKQ0KDQpgYGANCg0KDQpgYGB7ciBmaWcuYWxpZ249J2NlbnRlcicsIHdhcm5pbmc9RkFMU0V9DQpsaWJyYXJ5KGdhdGVwb2ludHMpDQoNCnNjb3JlID0gcGMkY2FscmVzJHNjb3Jlc1ssMToyXQ0KDQp4MTEoKQ0KbWRhcGxvdChzY29yZSwgY2V4PSAwLjEpDQpzZWxlY3RlZFBvaW50cyA8LSBmaHMoc2NvcmUpDQoNCmBgYA0KDQpgYGB7ciwgZmlnLmFsaWduPSdjZW50ZXInfQ0KDQpzZWxlY3Rpb24gPSBzZWxlY3RlZFBvaW50c1sxOmxlbmd0aChzZWxlY3RlZFBvaW50cyldICU+JSBhcy5udW1lcmljKCkNCg0KcGMgPSBwY2EoZCwgZXhjbHJvd3MgPSBzZWxlY3Rpb24pDQoNCnBsb3RTY29yZXMocGMsIGNleD0gMC4xKQ0KDQoNCmBgYA0KYGBge3IsIGZpZy5hbGlnbj0nY2VudGVyJ30NCg0KaW1zaG93KHBjJGNhbHJlcyRzY29yZXMpDQoNCmBgYA0KDQoNCg0KYGBge3J9DQp4MTEoKQ0KbWRhcGxvdChwYyRjYWxyZXMkc2NvcmVzWy1zZWxlY3Rpb24sMToyXSwgc2hvdy5saW5lcyA9IGMoMCwwKSwgY2V4ID0gMC4xKQ0Kc2VsZWN0ZWRQb2ludHMyIDwtIGZocyhwYyRjYWxyZXMkc2NvcmVzWywxOjJdKQ0KDQpgYGANCg0KDQoNCg0KYGBge3J9DQpzZWxlY3Rpb24yID0gc2VsZWN0ZWRQb2ludHMyWzE6bGVuZ3RoKHNlbGVjdGVkUG9pbnRzMildICU+JSBhcy5udW1lcmljKCkNCg0KYGBgDQoNCg0KYGBge3J9DQphID0gYygxOm5yb3coZCkpDQphID0gYVstc2VsZWN0aW9uMl0gJT4lIGFzLm51bWVyaWMoKQ0KDQpwYzEgPSBwY2EoZCwgZXhjbHJvd3MgPSBhKQ0KDQpgYGANCg0KDQpgYGB7ciwgZmlnLmFsaWduPSdjZW50ZXInfQ0KDQpwbG90U2NvcmVzKHBjMSwgY2V4PSAwLjEpDQoNCmBgYA0KDQoNCg0KYGBge3IsIGZpZy5hbGlnbj0nY2VudGVyJ30NCg0KDQppbXNob3cocGMxJGNhbHJlcyRzY29yZXMsMSkNCg0KDQpgYGANCmBgYHtyfQ0KZSA9IG1kYS5zZXRpbWJnKGQsIGRbLDFdIDwgMC44OCkNCg0KaW1zaG93KGUsMikNCg0KYGBgDQoNCg0KDQpgYGB7ciwgZmlnLmFsaWduPWNlbnRlcn0NCk92ZXJhbGwgPSBsZW5ndGgoZCkNClNhbXBsZSA9IGxlbmd0aChkKS1sZW5ndGgoc2VsZWN0aW9uKQ0KTWFyYmxpbmcgPSBsZW5ndGgoc2VsZWN0aW9uMikNCg0KZGZ0b3QgPSBkYXRhLmZyYW1lKCdQaXhlbF9jb3VudCcgPSBjKE92ZXJhbGwsIFNhbXBsZSwgTWFyYmxpbmcpKQ0Kcm93bmFtZXMoZGZ0b3QpID0gYygnT3ZlcmFsbCcsICdTYW1wbGUnLCAnTWFyYmxpbmcnKQ0KDQpkZnRvdCA9IGNiaW5kKGRmdG90LCAncHJjJyA9IGMoZGZ0b3QkUGl4ZWxfY291bnQvT3ZlcmFsbCoxMDApKSAlPiUgICByb3VuZChkaWdpdHMgPSAyKSU+JSANCiAgbXV0YXRlKHNhbXBsZV9wcmMgPSBjKCctJywnLScsIHJvdW5kKChNYXJibGluZy9TYW1wbGUqMTAwKSwgZGlnaXRzID0gMikgKSkgICU+JQ0KICBtdXRhdGUocHJjID0gcGFzdGUocHJjLCAnJScsIHNlcCA9ICcnKSkNCiAgICAgIA0KZGZ0b3Qkc2FtcGxlX3ByY1szXSA9IHBhc3RlKGRmdG90JHNhbXBsZV9wcmNbM10sICclJywgc2VwID0gJycpDQogIA0KZGZ0b3QgJT4lIGthYmxlKCkgJT4lIGthYmxlX3N0eWxpbmcoJ3N0cmlwZWQnLCBmdWxsX3dpZHRoID0gRikNCg0KYGBgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg==